第九讲
一. 推导式
1. 列表推导式
列表推导式是一种快速生成列表的方式,其形式我们通过案例来讲一下:
比如我们有一个需求,想要生成一个列表[0.5,1.0,1.5,2.0,2.5…10.0],我们可以这样实现:
li = []
for i in range(1,21):
li.append(i/2)
print(li)
通过列表推导式,我们可以将for循环写入列表内,则可以这么写:
li = [i/2 for i in range(1,21)]
print(li)
这样就可以更快速,更方便的生成列表,前面是对于i的处理,后面是循环语句。
多讲个例子,比如我们想随机生成一个列表,里面的整数大于-10,小于10:
import random
li = [random.randint(-10,10) for i in range(10)]
random库需要导入,其中.randint(x,y)是在x和y之间随机取一个整数的意思,需要注意的是,这里是可以取到x和y的,for循环在这里只是充当了一个计数器的作用。
再讲一个例子:
现在有一个字典:
dic = {
'name':'Tom','age':'18','gender':'male'}
想抽取其中的元素,变成以下形式的列表:
[key:value,key:value]
代码如下:
li = [i+':'+j for i,j in dic.items()]
需要注意一下,dic.items()
是返回dict_items([(key,value),(key,value)......])
的形式,如果是for i in dic.items()
,i代表的是元组(key,value)
,使用两个参数才会分别代表key和value。
2. 列表推导式和if联用
现在有一个列表:
li = [-7, 2, -2, -3, -5, 10, 5, -1, 10, -8]
我们想要将其中小于0的数字拿出来,平方后组成一个新的数列,可以这么处理:
li = [-7, 2, -2, -3, -5, 10, 5, -1, 10, -8]
li1 = []
for i in li:
if i < 0