python 三元运算、列表推倒式、字典推倒式、生成器生成式

1、三元运算

name=input('姓名>>: ')
res='SB' if name == 'alex' else 'NB'
print(res)

2、列表推倒式

#1、示例
egg_list=[]
for i in range(10):
    egg_list.append('鸡蛋%s' %i)

egg_list=['鸡蛋%s' %i for i in range(10)]

zip的用法

l = [1,2,3]

b = (4,5,6)

c = {7,8,9}

a = zip(l,b,c)

print(list(a))

  

结果:

[(1, 4, 8), (2, 5, 9), (3, 6, 7)]

3、字典推倒式

k = ['egon',18,'male']

v = ['name','age','sex']

d = {v:k for v,k in zip(k,v)}

print(d)

4、生成器生成式

通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。

所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器(Generator)。

要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator:

#1、把列表推导式的[]换成()就是生成器表达式

#2、示例:生一筐鸡蛋变成给你一只老母鸡,用的时候就下蛋,这也是生成器的特性
>>> chicken=('鸡蛋%s' %i for i in range(5))
>>> chicken
<generator object <genexpr> at 0x10143f200>
>>> next(chicken)
'鸡蛋0'
>>> list(chicken) #因chicken可迭代,因而可以转成列表
['鸡蛋1', '鸡蛋2', '鸡蛋3', '鸡蛋4',]

案例:我要统计文件每行个数最大的

with open('a.txt',encoding='utf-8') as f:
    nums=(len(line) for line in f)
  #max自动有一个生成器next的方法 print(max(nums))

#下面会报错 print(max(nums)) print(max(nums))

  

 



猜你喜欢

转载自www.cnblogs.com/wuheng-123/p/9178826.html