Python之生成式

一、生成式

1、列表生成式

1)语法

[expression for item1 in iterable1 if condition1
for item2 in iterable2 if condition2
...
for itemN in iterableN if conditionN
]
类似于
res=[ ]
for item1 in iterable1:
    if condition1:
        for item2 in iterable2:
            if condition2
                ...
                for itemN in iterableN:
                    if conditionN:
                        res.append(expression)

2)示例

l=[i**2 for i in range(5) if i > 2]
print(l)

names=['lqz_sb','yj_sb','jason_sb','egon']

l=[name for name in names if name.endswith('sb')]

print(l)

3)优点:

方便,改变了编程习惯,可称之为声明式编程

2、集合生成式

res={i for i in range(5)}
print(res)

3、字典生成式

res={f'k{i}': i**2 for i in range(5)}
print(res)

二、生成器表达式

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

#2、示例:生一筐鸡蛋变成给你一只老母鸡,用的时候就下蛋,这也是生成器的特性

#3、优点:省内存,一次只产生一个值在内存中
res=(i for i in range(5))
print(res,type(res))
print(next(res))
print(next(res))
print(next(res))
print(next(res))
print(next(res))
print(next(res))


nums=(i for i in range(200000))
res=sum(nums)
print(res)


with open('01 迭代器.py', mode='rt', encoding='utf-8') as f:
    data=f.read()
    print(len(data))  # 2202

    res=0
    for line in f:
        res+=len(line)

    res = sum((len(line) for line in f))
    res = sum(len(line) for line in f)
    print(res)

猜你喜欢

转载自blog.csdn.net/weixin_48283789/article/details/107514743