列表推导式和生成器表达式

列表推导式和生成器表达式就[ ] ( )不同

但列表推导式占内存

生成器表达式生成生成器,不占内存,每次取才产生数据

[满足条件的i for i in 可迭代数据类型 if i的相关条件]

# 列表推导式
# egg_list = []
# for i in range(10):
#     egg_list.append('鸡蛋%s'%i)

egg_list = ['鸡蛋%s'%i for i in range(10)] #列表推导式

num = [i**2 for i in range(10)]
print(num)

# 生成器表达式
g = (i for i in range(10))  # 生成了一个生成器
print(g)
for i in g:
    print(i)

# 括号不一样
# 返回的值不一样 生成器表达式不占内存

egg_gen = ('鸡蛋%s'%i for i in range(10)) #生成器表达式
for i in egg_gen:
    print(i)

g = (i**2 for i in range(10))   # range(10)中每一个数字平方的生成器
print(g.__next__())
print(g.__next__())
print(g.__next__())

 

g = (i for i in range(30) if i % 3 == 0)    # 30以内可以被3整除的数的生成器
for i in g:
    print(i)

 

names = [['Tom', 'Billy', 'Jefferson', 'Andrew'],
         ['Alice', 'Jill', 'Ana', 'Wendy', 'Jenny']]
ret = [name for lst in names for name in lst if name.count('e') ==2]
print(ret)

 

#将字典的key和val颠倒
mcase ={'a': 10, 'b': 35}
mcase_frequency = {mcase[k]:k for k in mcase}
print(mcase_frequency)

 

#合并大小写对应的value值,将k统一成小写
mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}
mcase_frequency = {k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0) for k in mcase.keys()}
print(mcase_frequency)

 

posted @ 2020-03-31 22:00  vivagoal  阅读(117)  评论(0)    收藏  举报