Python day5:列表生成式,生成器,迭代器

本文介绍了Python中列表生成式的使用方法,包括基本语法、条件筛选及多重循环的应用,并探讨了生成器与迭代器的概念及其区别。通过实例展示了如何利用这些特性高效地处理数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.列表生成式

生成有一定规律的列表可以使用列表生成式

如生成1到10的列表L=[x for x in range(1,11)]

生成1到10之中偶数的列表L=[x for x in range(1,11) if x%2==0]

生成1到10之中数的平方列表L=[x*x for x in range(1,11)]


多重循环:L=[m+n for m in range(1,11) for n in range(11,21)]

L=['ASUS','Dell','Leon']
print([s.lower() for s in L])
L1 = ['Hello', 'World', 18, 'Apple', None]
L2=[s.lower() if isinstance(s,str) else s for s in L1 ]
print(L2)
L3=[s.lower() for s in L1 if isinstance(s,str)]
print(L3)
isinstance(x,str)可以用来判断是否为字符串,是则返回True,不是返回False.这是一个内置函数(from collections import Iterable可以判断是否可以迭代)

留意L2的if else语句,类似于C语言的三目运算 a if ... else b for x in L  其中a,b为x的不同形式

2.生成器

<法一>将列表生成式的[]换为(),如g=(x*x for x in range(1,11))

<法二>


待续,此处不是很懂

s = (x * x for x in range(5))
print(s)
for x in s:
    print(x)

def fib(max):
    n, a, b = 0, 0, 1
    while n < max:
        yield b
        a, b = b, a + b
        n = n + 1
    return 'done'

f = fib(10)
print('fib(10):', f)
for x in f:
    print(x)

# call generator manually:
g = fib(5)
while 1:
    try:
        x = next(g)
        print('g:', x)
    except StopIteration as e:
        print('Generator return value:', e.value)
break


3.迭代器

list,tuple,dict,str,generator都可以与for循环连用,成为可迭代,Iterable

而如果还能够使用next()返回下一个对象,则称为迭代器,generator是一种迭代器,称为Iterator.迭代器无法预先知道序列长度, 可以表示无穷长的序列, 例如全体自然数. 而list,tuple,dict,str不行

判断函数:

from collections import Iterable
print(isinstance([],Iterable))
print(isinstance((),Iterable))
print(isinstance({},Iterable))
print(isinstance((x*x for x in range(1,11)),Iterable))
from collections import Iterator
print(isinstance([],Iterator))
print(isinstance((),Iterator))
print(isinstance({},Iterator))
print(isinstance((x*x for x in range(1,11)),Iterator))
True
True
True
True
False
False
False
True

from collections import Iterable, Iterator

def g():
    yield 1
    yield 2
    yield 3

print('Iterable? [1, 2, 3]:', isinstance([1, 2, 3], Iterable))
print('Iterable? \'abc\':', isinstance('abc', Iterable))
print('Iterable? 123:', isinstance(123, Iterable))
print('Iterable? g():', isinstance(g(), Iterable))

print('Iterator? [1, 2, 3]:', isinstance([1, 2, 3], Iterator))
print('Iterator? iter([1, 2, 3]):', isinstance(iter([1, 2, 3]), Iterator))
print('Iterator? \'abc\':', isinstance('abc', Iterator))
print('Iterator? 123:', isinstance(123, Iterator))
print('Iterator? g():', isinstance(g(), Iterator))

# iter list:
print('for x in [1, 2, 3, 4, 5]:')
for x in [1, 2, 3, 4, 5]:
    print(x)

print('for x in iter([1, 2, 3, 4, 5]):')
for x in iter([1, 2, 3, 4, 5]):
    print(x)

print('next():')
it = iter([1, 2, 3, 4, 5])
print(next(it))
print(next(it))
print(next(it))
print(next(it))
print(next(it))

d = {'a': 1, 'b': 2, 'c': 3}

# iter each key:
print('iter key:', d)
for k in d.keys():
    print('key:', k)

# iter each value:
print('iter value:', d)
for v in d.values():
    print('value:', v)

# iter both key and value:
print('iter item:', d)
for k, v in d.items():
    print('item:', k, v)

# iter list with index:
print('iter enumerate([\'A\', \'B\', \'C\']')
for i, value in enumerate(['A', 'B', 'C']):
    print(i, value)

# iter complex list:
print('iter [(1, 1), (2, 4), (3, 9)]:')
for x, y in [(1, 1), (2, 4), (3, 9)]:
print(x, y)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值