网站建设设置分享功能,广州网站建设乛新科送推广,求网站都懂得,短视频营销现状经常会看到类似于 [i for i in range(1,10)] 的表达式#xff0c;这种表达式称为列表解析#xff08;List Comprehensions#xff09;#xff0c;类似的还有字典解析、集合解析等等。
列表解析式是将一个列表#xff08;实际上适用于任何可迭代对象#xff09;转换成另一…经常会看到类似于 [i for i in range(1,10)] 的表达式这种表达式称为列表解析List Comprehensions类似的还有字典解析、集合解析等等。
列表解析式是将一个列表实际上适用于任何可迭代对象转换成另一个列表的工具。在转换过程中可以指定元素必须符合一定的条件才能添加至新的列表中这样每个元素都可以按需要进行转换。
每个列表解析式都可以重写为 for 循环但不是每个 for 循环都能重写为列表解析式列表解析比 for 更精简运行更快。 基本语法
[expression for iter_val in iterable]
[expression for iter_val in iterable if cond_expr] 列表解析式
举例说明将 1-10 每个数乘以 2 放入一个列表
用 for 循环实现如下 li []for i in range(1, 11):li.append(i*2) print(li)
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]用列表解析式实现如下 li [i*2 for i in range(1, 11)]print(li)
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]筛选条件
此外列表解析式还支持添加筛选条件例如筛选出 i*210 的数 li [i*2 for i in range(1, 11) if i*2 10]print(li)
[12, 14, 16, 18, 20]嵌套循环
更复杂一点嵌套循环也可以转换成列表解析式先看一个普通的嵌套循环 li1 [A, B, C]li2 [1, 2, 3]li3 []for m in li1:for n in li2:li3.append((m,n)) print(li3)
[(A, 1), (A, 2), (A, 3), (B, 1), (B, 2), (B, 3), (C, 1), (C, 2), (C, 3)]列表解析式实现如下 li1 [A, B, C]li2 [1, 2, 3]li3 [(m,n) for m in li1 for n in li2]print(li3)
[(A, 1), (A, 2), (A, 3), (B, 1), (B, 2), (B, 3), (C, 1), (C, 2), (C, 3)]字典解析式
普通 for 循环 a {language1:python, language2:java,language3:c}b {}for key, value in a.items():if key language1:b[key] value print(b)
{language1: python}用字典解析式实现如下 a {language1:python, language2:java,language3:c}b {key: value for key, value in a.items() if key language1}print(b)
{language1: python}集合解析式
普通 for 循环 a [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]b set() # 创建一个空集合for i in a:if i 5:b.add(i) print(b)
{6, 7, 8, 9, 10}用集合解析式实现如下 a [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]b {i for i in a if i 5}print(b)
{6, 7, 8, 9, 10}