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高级用法!