Python 列表推导式 教程


示例1

1
2
aList = [x * x for x in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

这个分为两部分:

1
2
x * x
for x in range(10) # 1

每当 #1循环一次,就把一个 x * x 放入到list中

示例2

1
2
3
freshfruit = [' banana', ' loganberry', ' passion fruit']
aList = [w.strip() for w in freshfruit] #1
['banana', 'loganberry', 'passion fruit']

每当 #1循环一次,就把一个w.strip()放入到list中。.strip()函数会去掉字符串的前导空格。

示例3

1
2
3
vec = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
[num for elem in vec for num in elem] # 1
[1, 2, 3, 4, 5, 6, 7, 8, 9]

1相当于一个两重循环

1
2
3
4
ans = []
for elem in vec:
for num in elem:
ans.append(num)

示例4

1
2
3
aList = [-1, -4, 6, 7.5, -2.3, 9, -11]
[i for i in aList if i > 0]
[6, 7.5, 9]

示例5

1
2
3
4
5
6
from random import randint
x = [randint(1, 10) for i in range(20)]
[8, 10, 9, 1, 10, 5, 1, 10, 6, 2, 3, 10, 2, 2, 7, 4, 10, 7, 7, 7]
m = max(x)
[index for index, value in enumerate(x) if value == m] # 1
[1, 4, 7, 11, 16]

1相当于:

1
2
3
4
ans = []
for index, value in enumerate(x):
if value == m:
ans.append(index)

示例6

1
2
[(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)]

Author: BY 水蓝
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source BY 水蓝 !
  TOC