python列表推导式嵌套,Python列表推导式玩法

前言

列表做为python的基础,是必须学习的语法之一。一些基础的之前已经是反复温习和使用了,今天我们来学习它的进阶版--》列表推导式。

列表推导式:

优点:是将所有的值一次性加载到内存中,相比于for循环生成的列表执行速度快,并且语法精简,一行代码就完成for循环多行代码所要完成的事情。

缺点:代码的可阅读性就不太友好了

语法:

[i for i in iterable if expression]

案例

1. 列表推导式可以与 if 表达式结合

首先使用常用的for循环实现

numbers = [-4, -3, -2, -1, 0, 2, 4, 6]

listA = []

for i in numbers:

if i > 0:

listA.append(i)

print(listA)

cc2d5da8db1797c791c1d95e032f9b23.png

下面请出列表推导式

numbers = [-4, -3, -2, -1, 0, 2, 4, 6]

x = [x for x in numbers if x>0]

print(x)

4cdb8d8cfab640b3160feeb4605522f5.png

2. 将以下二维列表展开成一维列表:

list_of_lists =[[[1, 2, 3]], [[4, 5, 6]], [[7, 8, 9]]]

l = [num for r in list_of_lists for num in r]

s = [num for r in l for num in r]

print(l)

print(s)

42d8b77c9b6c1b86f39d5e34abb49433.png

3. 使用列表推导式创建元组列表:

要生成的元组如下:

[(0, 1, 0, 0, 0, 0, 0),

(1, 1, 1, 1, 1, 1, 1),

(2, 1, 2, 4, 8, 16, 32),

(3, 1, 3, 9, 27, 81, 243),

(4, 1, 4, 16, 64, 256, 1024),

(5, 1, 5, 25, 125, 625, 3125),

(6, 1, 6, 36, 216, 1296, 7776),

(7, 1, 7, 49, 343, 2401, 16807),

(8, 1, 8, 64, 512, 4096, 32768),

(9, 1, 9, 81, 729, 6561, 59049),

(10, 1, 10, 100, 1000, 10000, 100000)]

s = [(i,1,i,i**2,i*i**2,i**4,i**2*i*i**2) for i in range(11)]

print(s)

3be9206d50d0e1d24c34239e33bc7af5.png

4. 将多嵌套列表合并为一个新列表:

countries = [[('Finland', 'Helsinki')], [('Sweden', 'Stockholm')], [('Norway', 'Oslo')]]

ls = [num for i in countries for num in i]

ll = [num for i in ls for num in i]

print(ll)

bfcc1e49b772e807a62f252596085a50.png

5. 将列表更改为字典列表:

ll = []

countries = [[('Finland', 'Helsinki')], [('Sweden', 'Stockholm')], [('Norway', 'Oslo')]]

country = ['country','city']

ls = [num for i in countries for num in i]

for i in ls:

x = dict(zip(country, i))

ll.append(x)

print(ll)

78bd5e0322b342688a16ee30d8fa71bb.png

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值