day14.2_三元表达式、列表生成式

一、三元表达式

print(条件成立时的返回值 if 条件 else 条件不成立时的返回值)

x=1
y=3
print(y if x>y else x)

二、列表生成式

l=[i**3 for i in range(3)]
print(l)

三、字典生成式

s="@@"
l=[1,2,3]
res=zip(s,l)  # <zip object at 0x0000021F3DC6CB48>  
print(list(res))         #元组形式的列表(一一对应,多余的不会组成元组)
print(type(zip(s,l)))  #<class 'zip'>

生成字典

keys=["name","age","sex"]
values=["Namy",18,"female"]
res=zip(keys,values)
print(res)    # <zip object at 0x000001BE6751CC08>
print(list(res))   # [('name', 'Namy'), ('age', 18), ('sex', 'female')]
d={}
for k,v in zip(keys,values):
    d[k]=v
print(d)   # {'name': 'Namy', 'age': 18, 'sex': 'female'}
d={k:v for k,v in zip(keys,values)}
print(d)

四、生成器表达式

g=(i for i in range(6))
print(g)   #<generator object <genexpr> at 0x000001A808412C50>
print(next(g))

统计文件中某行的字符长度最多

with open("a.txt",encoding="utf-8") as f:
    nums=(len(line) for line in f)
    print(max(nums))

例子:

l=["sb%s" %i for i in range(99)]
pirnt(l)     # 一次性生成99个sb

g=("sb%s"%i for i in range(99))
print(g)   #此时的g是一个生成器,并没有直接将99个值全部一次性取出
print(next(g))   #需要一个取出一个即可
原文地址:https://www.cnblogs.com/Smart1san/p/9178306.html