失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【Python 必会技巧】[i for i in range(1 10)] — 列表解析式 列表中使用 for 循环

【Python 必会技巧】[i for i in range(1 10)] — 列表解析式 列表中使用 for 循环

时间:2019-12-17 16:07:27

相关推荐

【Python 必会技巧】[i for i in range(1 10)] — 列表解析式 列表中使用 for 循环

经常会看到类似于[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*2>10的数:

>>> 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}

如果觉得《【Python 必会技巧】[i for i in range(1 10)] — 列表解析式 列表中使用 for 循环》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。