Python高级用法(一)之列表推导(list comprehensions)

python中有很多高级用法,掌握高级用法会让我们的代码更加简单,写起来更加轻松。
下面介绍第一个高级用法就是列表推导,作用就是由一个列表生成另外一个列表。

初体验

任务1:对于一个元素都是数值的列表,求出列表中每个元素平方组成的新列表。
一般做法:

x = [1,2,3,4,5,6,7,8,9]
for i in range(len(x)):
    x[i] = x[i]**2
print (x)
#[1, 4, 9, 16, 25, 36, 49, 64, 81]

列表推导做法:

x = [1,2,3,4,5,6,7,8,9]
x = [b**2 for b in x]
print (x)

这样不用循环,一行搞定。

进阶版

任务2: 对一一个元素都是数值的列表,求出列表中是偶数的元素的平方组成的新列表,并输出:

x = [1,2,3,4,5,6,7,8,9]
for i in range(len(x)):
    if i%2==0:
        x[i] = x[i]**2

列表推导做法:

x = [1,2,3,4,5,6,7,8,9]
x = [b**2 for b in x if b%2==0]
print (x)

不仅可以在里面写循环,还可以加上判断。

高级扩展

上面就是列表生成的介绍,下面看看一些稍微复杂一点的用法:
将函数传进行,这样可以想怎么用怎么用了。

def f(b):
    b = b**2
    b = b-1
    b = b**2
    return b
x = [1,2,3,4,5,6,7,8,9]
x = [f(b) for b in x if b%2==0]
print (x)

两个循环:

x = ["abc","def","ghi"]
x = [b for a in x for b in a]
print (x)

双循环加判断:

x = ["abc","def","aghi"]
x = [b for a in x for b in a if b=="a"]
print (x)

另外一种双循环:

x = [(x,y) for x in [1,2,3] for y in [4,5,6] if x!=y]
print (x)

大家如果还有什么有趣的用法可以自己尝试一下,也可评论交流,欢迎大家关注我,后续会继续更新一些python高级用法!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值