各种推导式以及进阶操作

各种推导式:注:没有元组推导式,因为如果使用了()就变成了生成器列表器

注意:写法都是一样的,仅是包围的括号不一样

列表推导式

格式: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)

 

posted on 2019-02-14 22:24  Jerry-Wang  阅读(188)  评论(0)    收藏  举报