一: 列表推导式
例一:
#常规实现
lists = []
for x in range(10):
lists.append(x**2)
print(lists)
|
#推导式实现
lists = [x**2 for x in range(10)] print(lists) |
例二:
#常规实现
lists_1=[]
for num in range(30):
if num % 3 == 0 :
lists_1.append(num)
print(lists_1)
|
#推导式实现
lists_1 = [i for i in range(30) if i%3 == 0] print(lists_1) |
例三: (通过改进例一实现返回函数调用)
def setNum(num):
return num*num
lists = [setNum(num) for num in range(30) if num % 3 == 0]
|
例四: 嵌套列表降维
list_2 = [[1,2,3],[40,56,52,59],[12,23,45,123,56]]
for x in list_2:
for y in x:
print(y)
list_result = [y for x in list_2 for y in x]
print(list_result)
|
例五: 模拟多次掷硬币
from random import random result = [int(round(random())) for x in range(10)] print(result) |
例六: 获取目录里的文件名列表
import os
liststr = os.listdir("../")
for f in liststr:
if f.endswith(".txt"):
print(f)
result=[x for x in os.listdir("../") if x.endswith(".txt")]
|
使用()生成generator,将推导式的[]改成()即可得到生成器
lists = (i for i in range(30) if i % 3 == 0) print(lists.next()) print(lists.next()) print(lists.next()) |
二: 字典推导式
dicts = {"a":12,"b":35}
dicts_1 = {v:k for k,v in dicts.items()}
print(dicts_1)
|
三: 集合推导式
sets = {x**2 for x in [3,6,10]}
print(sets)
for x in sets:
print(x)
|