Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。
[表达式 for 变量 in 列表]
[out_exp_res for out_exp in input_list]
或者
[表达式 for 变量 in 列表 if 条件]
[out_exp_res for out_exp in input_list if condition]
if
condition:条件语句,可以过滤列表中不符合条件的值。elements = ["aaa", "bbbb", "Cc", "ddDddd"]
new_elements = [e.upper() for e in elements if len(e) <= 3]
print(new_elements)
# ['AAA', 'CC']
# 准备一个 0 ~ 30 的列表。
nums = list(range(31))
# 保留能整除 3 的数字。
new_nums = [i for i in nums if i % 3 == 0]
print(new_nums)
# [0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
{ key_expr: value_expr for value in collection }
或者
{ key_expr: value_expr for value in collection if condition }
# 创建一个以姓名:年龄为键值对的字典。
items = {"jan": 18, "rose": 21, "jack": 32}
# 将 key 转化为大写。
mew_items = {key.upper(): items.get(key) for key in items}
print(mew_items)
# {'JAN': 18, 'ROSE': 21, 'JACK': 32}
items = {num: (num ** 2) for num in (2, 3, 4)}
print(items)
# {2: 4, 3: 9, 4: 16}
{ expression for item in Sequence }
或者
{ expression for item in Sequence if conditional }
set
集:nums = {num + 1 for num in (1, 2, 3)}
print(nums)
# {2, 3, 4}
元组推导式可以利用
range()
区间、元组、列表、字典和集合等数据类型,快速生成一个满足指定需求的元组。
(expression for item in Sequence )
或者
(expression for item in Sequence if conditional )
nums = (num for num in range(5))
# 返回的是一个生成器对象。
print(nums)
# at 0x000001ED30CE5220>
# 使用 tuple() 函数将生成器对象转化为元组。
print(tuple(nums))
# (0, 1, 2, 3, 4)
“-------怕什么真理无穷,进一寸有一寸的欢喜。”
微信公众号搜索:饺子泡牛奶。