各种推导式以及进阶操作
各种推导式:注:没有元组推导式,因为如果使用了()就变成了生成器列表器
注意:写法都是一样的,仅是包围的括号不一样
列表推导式
格式:l = [每个元素或者是和元素相关的操作 for 元素 in 可迭代数据类型]----遍历所有元素
完整的推导式:l = [满足条件的元素相关操作 for 元素 in可迭代数据类型 if 元素相关的条件]-----筛选元素
# 30 以内所有能被3整除的数 l = [i for i in range(30) if i%3 == 0] for i in l: print(i) # 等同于以下代码 for i in range(30): if i%3 == 0 : print(i)
进阶:循环取嵌套列表中的值
#例子:找到嵌套列表中名字含有两个‘e’的所有名字 ls = [['eae','egg','eee'],['eeg','e','ee']] for i in ls: for ii in i: if ii.count('e')>=2: print(ii) #列表推导式:先循环最外面的列表,再循环里面的小列表,就算是三层嵌套也一样 l = [ii for i in ls for ii in i if ii.count('e')>=2 ] print(l)
字典推导式
# 对调一个字典的key和value值 dic = {'a':10,'b':20} for k in dic: print(dic[k]) print(dic[k]:k) # dic[k]获取到的是字典里的Value print(dic) #字典推导式 dic = {dic[k]:k for k in dic} #合并大小写对应的value值,将k统一成小写 dic = {'a':1,'b':2,'c':3,'A':1,'C':3} #题意解析:大小写相同的key对应的Value值相加,然后将Key统一成小写 for k in dic: print({k.lower():dic.get(k.lower(),0)+dic.get(k.upper(),0)}) #字典推导式 dic = {k.lower():dic.get(k.lower(),0)+dic.get(k.upper(),0) for k in dic} print(dic)
集合推导式: 自带结果去重功能
#例:计算列表中每个值的平方 test = {x**2 for x in [1,-1,2]} print(test)
浙公网安备 33010602011771号