Python列表推导式

举报
北山啦 发表于 2021/04/20 22:41:05 2021/04/20
【摘要】 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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200