Python 序列推倒式

Python 推倒式

列表、集合和字典推导式

列表推导式是Python最受喜爱的特性之一

  • 它允许用户方便的从一个集合过滤元素,形成列表
  • 在传递参数的过程中还可以修改元素

语法如下

[expr for val in collection if condition]

等同于

result = []
for val in collection:
    if condition:
        result.append(expr)

filter条件可以被忽略,只留下表达式就行

'''给定一个字符串列表
过滤出长度在2及以下的字符串
并将其转换成大写
'''

>>> strings = ['a', 'as', 'bat', 'car', 'dove', 'python']
>>> [x.upper() for x in strings if len(x) > 2]
['BAT', 'CAR', 'DOVE', 'PYTHON']

用相似的方法,还可以推导集合和字典

dict_comp = {key-expr : value-expr for value in collection if condition}

'''返回字符串在列表中的位置
'''

>>> strings = ['a', 'as', 'bat', 'car', 'dove', 'python']
>>> {val : index for index, val in enumerate(strings)}
{'a': 0, 'as': 1, 'bat': 2, 'car': 3, 'dove': 4, 'python': 5}

集合的推导式与列表很像,只不过用的是尖括号

set_comp = {expr for value in collection if condition}

'''返回列表内字符串的长度
'''

>>> strings = ['a', 'as', 'bat', 'car', 'dove', 'python']
>>> {len(x) for x in strings}
{1, 2, 3, 4, 6}

# map函数可以进一步简化
>>> set(map(len, strings))
{1, 2, 3, 4, 6}
嵌套列表推倒式

嵌套列表推导式看起来有些复杂
列表推导式的for部分是根据嵌套的顺序,过滤条件还是放在最后

'''将一个整数元组的列表扁平化成了一个整数列表
'''

>>> some_tuples = [(1, 2, 3), (4, 5, 6), (7, 8, 9)]
>>> [x for tup in some_tuples for x in tup]
[1, 2, 3, 4, 5, 6, 7, 8, 9]

# 等同于
>>> flattened = []
>>> for tup in some_tuples:
...     for x in tup:
...         flattened.append(x)
...
>>> flattened
[1, 2, 3, 4, 5, 6, 7, 8, 9]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值