Python列表推导式
【摘要】 Python列表推导式
列表推导式举例:Python打印99乘法表
print('\n'.join([''.join(['%s*%s=%-2s '%(y,x,x*y)for y in range(1,x+1)])for x in range(1,10)]))
1
print('\n'.join([' '.join([f"{j}x{i}={i*j}" for j...
Python列表推导式
列表推导式举例:Python打印99乘法表
print('\n'.join([''.join(['%s*%s=%-2s '%(y,x,x*y)for y in range(1,x+1)])for x in range(1,10)]))
- 1
print('\n'.join([' '.join([f"{j}x{i}={i*j}" for j in range(1, i + 1)]) for i in range(1, 10)]))
- 1
一、列表推导式
列表推导式书写形式:
[表达式 for 变量 in 列表]
[表达式 for 变量 in 列表 if 条件]
1、列表中创建列表
# 计算0~9所有偶数平方
squares = []
for x in range(10): if x%2 == 0: squares.append(x**2)
- 1
- 2
- 3
- 4
- 5
squares
- 1
[0, 4, 16, 36, 64]
- 1
2、如果使用列表推导式,代码会精简、易读很多
squares = [x**2 for x in range(10) if x%2==0]
- 1
squares
- 1
[0, 4, 16, 36, 64]
- 1
3、可以有两个for循环遍历两个变量
# 注意,这里的x和y没有关系
[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
- 1
- 2
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
- 1
names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'], ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
print([name for lst in names for name in lst if name.count('e') >= 2]) # 注意遍历顺序,这是实现的关键
- 1
- 2
- 3
- 4
4、结果元素可以使用各种函数加工
[(str(x), x**2) for x in range(6)]
- 1
[('0', 0), ('1', 1), ('2', 4), ('3', 9), ('4', 16), ('5', 25)]
- 1
5、可以嵌套遍历两层结构
# 注意,这里的x和y是有关系的
vec = [[1,2,3], [4,5,6], [7,8,9]]
[y for x in vec for y in x]
- 1
- 2
- 3
[1, 2, 3, 4, 5, 6, 7, 8, 9]
- 1
二、集合set推导式
将中括号换成大括号,就变成了集合set推导式
# 返回的是去重元素的集合
a = {x for x in 'abracadabra' if x not in 'abc'}
- 1
- 2
a
- 1
{'d', 'r'}
- 1
三、字典dict推导式
将中括号换成大括号,并且返回元素是Key:Value形式,就变成了字典dict推导式
# 返回的是一个新的字典
{str(x): x**2 for x in (2, 4, 6)}
- 1
- 2
{'2': 4, '4': 16, '6': 36}
- 1
将一个字典的key和value对调
mcase = {'a': 10, 'b': 34}
mcase_frequency = {mcase[k]: k for k in mcase}
print(mcase_frequency)
- 1
- 2
- 3
文章来源: blog.csdn.net,作者:北山啦,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq_45176548/article/details/112755402
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)