31-python-推导式

# [ 每一个元素/和元素相关的操作  for  元素  in  可迭代数据类型 ]  # 变量之后挨个处理
# [ 满足条件的元素相关操作 for 元素 in 可迭代数据类型 if 元素相关的条件 ] # 筛选功能


# 完整的列表推导式-------------------- 占内存

    # 30 以内 能够被 3 整除的
q = [i for i in range(30) if i %3 == 0]
print(q)    # 打印结果:[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

    # 30 以内 能够被3整除的数 的平方
q1 = [i*i for i in range(30) if i % 3 == 0]
print(q1)   # 打印结果:[0, 9, 36, 81, 144, 225, 324, 441, 576, 729]s

    # 进阶 -- 列表的嵌套 -- 找出 列表中 含有两个 q 的字符
names = [
    ['qweqwe','sdfsdf','qgaq'],
    ['qrwq','sdfgsdf','dfsg']
]
    # 先 for 大列表 然后继续 for 小列表 ...
q2 = [name for lis in names for name in lis if name.count('q') == 2]
print(q2)   # 打印结果:['qweqwe', 'qgaq', 'qrwq'] 

# 生成器表达式:------------------------- 不占内存
    # 30 以内 能够被 3 整除的
q3 = (i for i in range(30) if i %3 == 0)
print(q3)       # 打印结果:<generator object <genexpr> at 0x0000022FE39B8A40>
print(list(q3)) # 打印结果:[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

 

# 字典推导式:-------------------------

    # 使 字典的 k 和 v 对调
dic = {'a':1,'b':2}
q4 = {dic[k]:k for k in dic}
print(q4)   # 打印结果:{1: 'a', 2: 'b'}

'''
for i in dic:
    print(i)     # a  b
    print(dic[i])# 1  2 
'''


# 合并大小写 对应的 value

dic1 = {'a':10,'b':21,'A':23,'D':2}

q5 = {k.lower():dic1.get(k.lower(),0) + dic1.get(k.upper(),0) for k in dic1}
print(q5)   # 打印结果:{'a': 33, 'b': 21, 'd': 2}

  

# 集合推导式,自带 去重-------------------------

    # 计算每一个值得平方
d = {x**2 for x in [1,-1,2,4]}
print(d)    # 打印结果:{16, 1, 4}

  

posted @ 2018-10-08 21:55  _Q  阅读(109)  评论(0)    收藏  举报