Python—列表解析

列表解析是将一个列表转换为另一个列表的工具。在转换的过程中,可以指定元素必须符合一定的条件,才能添加到新的列表中,这样每个元素都可以按需要进行转换。

列表解析可以看做结合了 filter函数与map函数功能的语法:

double_odds = map(lambda n: n*2, filter(lambda n: n%2==1, numbers))
double_odds = [n*2 for n in numbers if n%2 == 1]
======================================================================================

1. 从循环到列表解析式

每个列表解析式都可以重写为for循环,但是不是每个for循环都可以写成列表解析式

new_things = []
for item in list:
    if condition_based_on(item)
       new_things = new_things.append('I have ' + item)

上面的便可以写成

new_things = ['I have '+ item for item in list if condition_based_on(item)]

======================================================================================

2. 无条件的列表解析式

如果是没有if... 部分的代码,会更好实现

numbers_new = []
for n in number_old:
    numbers_new.append(n*2)

上面的便可以写成

numbers_new = [n*2 for n in number_old]

=======================================================================================

3. 嵌套循环

例如一个拉平矩阵(flatten功能)的for循环:

flattened = []
for row in matrix:
    for n in row:
       flattened.append(n)
上面的便可以写成
flattened = [n for row in matrix for n in row]

=======================================================================================

4. 其他解析式

4.1 集合解析式:

例如提取每个单词的首字母,创建一个集合set:

first_letters = set()
for w in words:
    first_letters.add(w[0])

等于

first_letters = [w[0] for w in words]

4.2 字典解析式:

例如将原有字典的键值互换,从而创建一个新的字典

flipped = {}
for key,value in original.items():
    flipped[value] = key
flipped = {value: key for key, value in original.items()}






  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值