Inventori tiga kaedah penjanaan senarai Python

Lepaskan: 2023-07-25 16:54:12
ke hadapan
4074 orang telah melayarinya

1. Pengenalan

Pemahaman Senarai, generasi Python terbina dalam yang sangat mudah tetapi berkuasa yang boleh digunakan untuk membuat senarai.


2. Analisis kes

Tiga kaedah

Untuk menjana senarai [1, 2, 3, 8, 9] anda senarai(julat(1, 11)).

print(list(range(1, 11)))
Salin selepas log masuk

Inventori tiga kaedah penjanaan senarai Python

Bagaimana jika anda ingin menjana [1x1, 2x2, 3x3, …, 10x10]?

1. Kaedah satu ialah gelung:
L = []
for x in range(1, 11):
    L.append(x * x)
print(L)
Salin selepas log masuk

Tetapi gelung itu terlalu menyusahkan, dan kaedah penjanaan senarai boleh menggunakan pernyataan satu baris dan bukannya menggelung untuk menjana senarai di atas:

print([x * x for x in range(1, 11)])
Salin selepas log masuk

Inventori tiga kaedah penjanaan senarai Python

写列表生成式时,把要生成的元素x * x放到前面,后面跟for循环,就可以把list创建出来,十分有用,多写几次,很快就可以熟悉这种语法。

for循环后面还可以加上if判断,这样就可以筛选出仅偶数的平方:

for x in range(1, 11):
    L.append(x * x)


print([x * x for x in range(1, 11) if x % 2 == 0])
Salin selepas log masuk

Inventori tiga kaedah penjanaan senarai Python

2. 使用两层循环,可以生成全排列
L = []
for x in range(1, 11):
    L.append(x * x)


print( [m + n for m in 'ABC' for n in 'XYZ'])
Salin selepas log masuk

Inventori tiga kaedah penjanaan senarai Python

三层和三层以上的循环就很少用到了。

3. 运用列表生成式,可以写出非常简洁的代码。

例如,列出当前目录下的所有文件和目录名,可以通过一行代码实现:

import os  # 导入os模块,模块的概念后面讲到


print([d for d in os.listdir('.')])  # os.listdir可以列出文件和目录
Salin selepas log masuk

Inventori tiga kaedah penjanaan senarai Python

for循环其实可以同时使用两个甚至多个变量,s比如dict的items()可以同时迭代key和value:

d = {'x': 'A', 'y': 'B', 'z': 'C'}
for k, v in d.items():
    print(k, '=', v)
Salin selepas log masuk

Inventori tiga kaedah penjanaan senarai Python

因此,列表生成式也可以使用两个变量来生成list:

d = {'x': 'A', 'y': 'B', 'z': 'C' }
print([k + '=' + v for k, v in d.items()]
Salin selepas log masuk

Inventori tiga kaedah penjanaan senarai Python

最后把一个list中所有的字符串变成小写:

L = ['Hello', 'World', 'IBM', 'Apple']
print([s.lower() for s in L])
Salin selepas log masuk

Inventori tiga kaedah penjanaan senarai Python

如果list中既包含字符串,又包含整数,由于非字符串类型没有lower()方法,所以列表生成式会报错:

L = ['Hello', 'World', 18, 'Apple', None]
print([s.lower() for s in L])
Salin selepas log masuk

Inventori tiga kaedah penjanaan senarai Python

使用内建的isinstance函数可以判断一个变量是不是字符串:

x = 'abc'
y = 123
print(isinstance(x, str))


print(isinstance(y, str))
Salin selepas log masuk

Inventori tiga kaedah penjanaan senarai Python


三、练习和思考

请修改列表生成式,通过添加if语句保证列表生成式能正确地执行。

# -*- coding: utf-8 -*-
L1 = ['Hello', 'World', 18, 'Apple', None]
L2=???


# 期待输出: ['hello', 'world', 'apple']
print(L2)
Salin selepas log masuk

练习参考代码 :

L2 =[s.lower() for s in L1 if isinstance(s, str) ]
Salin selepas log masuk

运行结果:

Inventori tiga kaedah penjanaan senarai Python

注:

Menggunakan penjanaan senarai, anda boleh menjana senarai dengan cepat dan anda boleh memperoleh senarai lain daripada satu senarai, tetapi kodnya sangat ringkas.

4. Ringkasan

Artikel ini berdasarkan asas Python dan memperkenalkan penjanaan senarai, memfokuskan pada kes dan menerangkan tiga kaedah.

Analisis kaedah yang berbeza untuk mencapai kesan yang sama. Perkara yang memerlukan perhatian dan kesukaran yang dihadapi dalam kes sebenar disediakan, dan penyelesaian yang berkesan disediakan. Akhir sekali, melalui amalan dan pemikiran, anda boleh mendalami pemahaman anda tentang penjanaan senarai.

Atas ialah kandungan terperinci Inventori tiga kaedah penjanaan senarai Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:Go语言进阶学习
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!