【python笔记】列表推导式


前言

  • 列表推导式只有一个作用,那就是生成列表
  • 通过列表推导式生成列表使代码更简洁;
  • map/filter这类高级语法不一定快于列表推导式。

列表推导式示例

# 生成0 - 9的列表
list1 = [i for i in range(10)]

生成器表达式

列表推导只能生成列表,如果想生成其它类型的序列,那就需要使用生成器表达式。
生成器表达式的语法和列表推导差不多,只是把方括号换成了圆括号而已。

  • 示例:使用生成器表达式生成元组
symbols = '@#$%^&*'
tuple1 = tuple(symbol for symbol in symbols)
# ('@', '#', '$', '%', '^', '&', '*')
  • 示例:使用生成器表达式计算笛卡尔积
colors = ['black','white','green']
sizes = ['S','M','X','L']
for tshirt in (f"{color},{size}" for color in colors for size in sizes):
    print(tshirt)

结果:

black,S
black,M
black,X
black,L
white,S
white,M
white,X
white,L
green,S
green,M
green,X
green,L