四张图帮你掌握python列表推导式

2020/02 21 12:02
阅读(1742)

python列表推导式可以简化for循环迭代列表,可以减少代码量,使用程序更加简洁。 python列表推导式可以利用 range 区间、元组、列表、字典和集合等数据类型,快速生成一个满足指定需求的列表。 下面就来说说列表推导式的四种用法:

1、列表推导式的基本用法,基本格式为: [表达式 for 迭代变量 in 可迭代对象 ]

 
a_list = [x * x for x in range(10)]
#输出结果:
[out]:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

列表推导式基本格式用法图示说明:

python列表推导式

2、 带条件的列表推导式,语法格式为:[表达式 for 迭代变量 in 可迭代对象 if 条件表达式] ,if 语句可以多个。

 
b_list = [x * x for x in range(10) if x % 2 == 0
python列表推导式

3、多个for语句的列表推导式格式,基本格式为:[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]

python列表推导式

举个例子:

 
[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
#输出结果:
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

多个for循环语句的列表推导式等价于:

 
combs = []
for x in [1,2,3]:
     for y in [3,1,4]:
          if x != y:
              combs.append((x, y))
#输出结果:
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

4、列表推导式嵌套列表推导式,这个有点复杂。

python列表推导式嵌套

举个例子:

 
matrix=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
[[row[i] for row in matrix] for i in range(4)]
#输出结果:
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

上面这个嵌套列表推导式等价于:

 
transposed = []
for i in range(4):
     transposed.append([row[i] for row in matrix])
#输出结果:
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

上面四种python列表推导式后面两种有点复杂,但只要拆分来看,也就很容易理解了。 实际应用中,你也可以使用内置函数去组成复杂的流程语句。 

o郭二爷o原创或整理--转载请注明: http://www.dszhp.com/python-list.html

发表回复

欢迎回来 (打开)

(必填)