{key_exp:value_exp for key_exp,value_exp in aiterator}
具体案例如下:
keys =['name','age','weight']
values =['jiamin','28','81']
infoMap ={k: v for k, v inzip(keys, values)}
推导+逻辑处理
使用if语句实现选择处理遍历的元素,如下语法规则:
for i in aiterator if...{key_exp:value_exp for key_exp,value_exp in aiterator if...}
具体案例如下
##取偶数
square_odd =[i * i for i inrange(1,11)if i * i %2==0]##只取年龄
infoMap_odd ={k: v for k, v inzip(keys, values)if k =='age'}##通过字典生成字典
dict_one ={'name':'jiamin','age':'28','weight':'81'}
dict_two ={k: v for k, v in dict_one.items()if k =='name'}
import itertools## 迭代器工具类## 从1 开始,每此以3 为步迭代defcountTest():for i in itertools.count(1,3):print(i)if i >=10:break##无线循环迭代defcycleTest():for i in itertools.cycle([1,2,3]):print(i)## 循环迭代 输出: [2, 2, 2]defrepeatTest():print(list(itertools.repeat(2,3)))##chain(p,q,...)链接迭代,将p,q连接起来迭代输出:[1, 2, 3, 4, 5, 6]defchainTest():print(list(itertools.chain([1,2,3],[4,5,6])))## compress(data,selectors) 根据selectors中的值选择迭代data序列中的值 输出: [1, 3]defcompressTest():print(list(itertools.compress([1,2,3,4],[1,None,True,False])))## dropwhile(pred,seq) 当pred对序列元素处理结果为False时候开始迭代seq后所有的值 输出:[1, 2, 10, 11]defdropwhileTest():print(list(itertools.dropwhile(lambda x: x >6,[8,9,1,2,10,11])))## filterfalse(pred,seq) 当pred处理为假的元素 输出:[1, 2]deffilterfalseTest():print(list(itertools.filterfalse(lambda x: x >6,[8,9,1,2,10,11])))## takewhile 与dropwhile相反 当pred对序列元素处理结果为True时候开始迭代seq后所有的值 输出:[8, 9]deftakewhileTest():print(list(itertools.takewhile(lambda x: x >6,[8,9,1,2,10,11])))## tee(it, n) 将it重复n次进行迭代defteeTest():for its in itertools.tee([0,1],2):for it in its:print(it)## zip_longest(p,q,...) 按每个序列中对应位置元素组合成新的元素进行迭代defzip_longestTest():for i in itertools.zip_longest([1,2,3,8],[3,4,5,76],(0,2,3,4)):print(i)## product(p,q,...[,n]) 迭代排列中出现元素的全排列defproductTest():for i in itertools.product([1,2,3,8],[3,4,5,76]):print(i)## permutations(p, q) 求p迭代序列中q个元素的全排列defpermutationsTest():print(list(itertools.permutations([1,2,3,4],4)))print(list(itertools.permutations('ASBD',4)))## combinations(p, r)迭代序列中r个元素的组合defcombinationsTest():print(list(itertools.combinations('abc',2)))print(list(itertools.combinations([1,2,3],2)))if __name__ =='__main__':combinationsTest()