推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。例如从生成器rang(1, 1001)取出所有奇数或者所有偶数或者7的倍数等等,虽然用循环也能够实现,但使用推导式更简洁
共有三种推导,在Python2和3中都有支持:
- 列表(list)推导式
- 字典(dict)推导式
1.列表推导式
需求:如何快速生成0-100的列表:
方式一:通过之前学过的循环来做
#while循环
list1=[]
i = 0
while i <100:
list1.append(i)
i += 1
print('list1的值为:',list1)
#for循环
list2 = []
for i in range(100):
list2.append(i)
print('list2的值为:',list2)
方式二:使用列表推导式
list3 = [i for i in range(100)]
print('list3的值为',list3)
练习1:
url="http://.....?page={}"
urls=[]
for i in range(0,101,10):
urls.append(url.format(i))
print(urls)
#列表推导式
urls1 = [url.format(i) for i in range(0,101,10)]
print(urls1)
练习2:
#输出偶数
num = [i for i in range(20) if i%2 == 0]
print(num)
2.字典推导式
除去列表推导式,还有字典推导式
需求:有一个列表,需要快速将列表转换为下标为键,值为元素值的字典格式数据
#字典推导式
li=['a','b','c','d','e']
#使用for循环
dict1={}
for i,j in enumerate(li):
dict1[i] = j
print(dict1)
list5 = ['name','age','gender']
dic={i:v for i in list5 for v in range(3)}
print(dic)
#for i in list5:
# for v in range(3):
# dic[i] = v
{'gender': 2, 'age': 2, 'name': 2}