列表推导式/列表解析笔记

列表推导式用来动态创建列表,只用一条简洁的表达式即可对得到的元素进行转换变形,有关的表达式为for A in B

[表达式 for 变量 in 列表] 或者 [表达式 for 变量 in 列表 if 条件]

例如:

>>> list1 = [ i*3 for i in range(10) ]
>>> list1
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

等同于如下:
list1 = []
for x in range(10):
    list1.append(x*3)
print(list1)

再如:

>>> list1 = [(m, n) for m in range(8) for n in range(8) if m%2==0 if n%2!=0]
>>> list1
[(0, 1), (0, 3), (0, 5), (0, 7), (2, 1), (2, 3), (2, 5), (2, 7), (4, 1), (4, 3), (4, 5), (4, 7), (6, 1), (6, 3), (6, 5), (6, 7)]

等同于如下:
list1 = []
for m in range(8):
    for n in range(8):
        if m%2 == 0:
            if n%2!= 0:
                list1.append((m,n))
print(list1)

最后一个例子:

list1 = []
list2 = ['1.how are you', '2.Welcome to China', '3.Fine!']
list3 = ['2.June', '3.Lucy', '1.Lily']
list4 = [name + ':' + slogan[2:] for slogan in list2 for name in list3 if slogan[0] == name[0]]
for each in list4:
    print(each)

运行结果如下图:
这里写图片描述

过滤条件可有可无,取决于实际应用,只留下表达式;相当于下面这段for循环:

result = []  
for value in collection:  
    if condition:  
        result.append(expression)  

例1: 过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母

>>> names = ['Bob','Tom','alice','Jerry','Wendy','Smith']  
>>> [name.upper() for name in names if len(name)>3]  
结果为:
['ALICE', 'JERRY', 'WENDY', 'SMITH']  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值