推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。 共有三种推导,在Python2和3中都有支持:
列表推导是一种表达
for-loop
的python方式,该代码以单行代码附加到列表。
[i for i in range(10) if i % 2 == 0]
相同逻辑的for循环
re = []
for i in range(10):
if i % 2 == 0:
re.append(i)
组成部分
[[output value] for (i in iterable) if(filter conditions)]
问题陈述
将每个数字平方,aList
然后将结果存储为列表。
for循环
aList = [1,2,3,4,5]
re = []
for i in aList:
re.append(i**2)
列表推导式
re = [i**2 for i in [1, 2, 3, 4, 5]]
问题陈述
将aList
中的偶数平方将结果存储在新列表中。
for循环
aList = [1,2,3,4,5]
re = []
for i in aList:
if i % 2 == 0:
re.append(i**2)
列表推导式
re = [i**2 for i in [1,2,3,4,5] if i % 2 == 0]
if-else
的列表推导式问题陈述
将aList
中的偶数平方,奇数立方将结果存储在新的列表中。
for循环
aList = [1,2,3,4,5]
re = []
for i in aList:
if i % 2 == 0:
re.append(i**2)
else:
re.append(i**3)
列表推导式
[i**2 if i % 2 == 0 else i**3 for i in [1,2,3,4,5]]
问题陈述
展开矩阵,仅保留偶数。
for循环
matrix = [[1,2,3,4],[5,6,7,8]]
re = []
for row in matrix:
for i in row:
if i % 2 == 0:
re.append(i)
列表推导式
matrix = [[1,2,3,4],[5,6,7,8]]
[i for row in matrix for i in row if i % 2 == 0]
问题陈述
对于bList
中的每个元素,在aList
中的位置。以元组列表形式表示。
for循环
aList = [0,1,2,3,4,5,6,7,8,9]
bList = [1,2,3,3,4,6,7,7]
re = []
for i in bList:
re.append((i, aList.index(i)))
列表推导式
[(i, aList.index(i)) for i in bList]
问题陈述
对于bList
中的每个元素,在aList
中的位置。以字典形式表示。
for循环
aList = [0,1,2,3,4,5,6,7,8,9]
bList = [1,2,3,3,4,6,7,7]
re = {}
for i in bList:
re[i]=aList.index(i)
列表推导式
{i:aList.index(i) for i in bList}
原文:https://www.cnblogs.com/mephisto03/p/12259768.html