#Python系列#--python推导式之列表、字典、集合推导式

user

雨橙

中国.四川.成都

世界之上、唯有远见、惟爱不变。


一: 列表推导式
 
例一:
#常规实现
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)

posted at