前言
我们在实际的python编程中是不是经常遇到这样的代码:
list_a = [x**2 for x in range(10)]
print(list_a)#[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
我们不一定要能写出这样的代码,但是,我们一定要能读懂这样的代码。
一、列表推导式
下面直接进入正文,我们刚刚也看到了这样一个例子,可以通过一个表达式推导出一个完整的列表。大概的结构就是
[表达式 for 变量 in 可迭代对象] 或者 [表达式 for 变量 in 可迭代对象if 条件]
还是上面的例子,我们把这个例子改写成我们熟悉的形式。
list_a = [x**2 for x in range(10)]
print(list_a)#[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
相信熟悉python代码的人都能看懂这样的代码。
我们把它改写成刚入门的童鞋也能看懂的代码,如下:
list_b = []
for x in range(10):
list_b.append(x**2)
print(list_b)#[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
这两部分代码是一样的功能哈。
再来看看带if过滤条件的。
list_a = [x**2 for x in range(10) if x % 2 ==0]
print(list_a)#[0, 4, 16, 36, 64]
list_b = []
for x in range(10):
if x % 2 ==0:
list_b.append(x**2)
print(list_b)#[0, 4, 16, 36, 64]
其实都很简单,我们在遇到这样的代码的时候,这样去读就可以了,先是for循环,然后是过滤条件(if条件),然后再读表达式。是不是逻辑就清晰了。
if…else
这里要特别注意!
因为带if…e