zip() 拉链函数

博客介绍了Python中zip(*iterables)函数,它能生成一个迭代器,聚合可迭代对象的每个元素,返回由元组组成的迭代器,第i个元组包含各参数序列或可迭代对象的第i个元素,迭代器在最短可迭代对象输出完时结束。

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

(6)zip(*iterables) 生成一个迭代器,它聚合了可迭代对象的每个元素。
返回一个由元组组成的迭代器,其中第i个元组包含来自每个参数序列或可迭代对象的第i个元素,当最短的可迭代对象被输出时,该迭代器完成,
这里写图片描述
原理如下:

def zip(*iterables):
	# zip('ABCD', 'xy') ---> Ax By
	sentinel = object()
	iterators = [iter(it) for it in iterables]
	while iterators:
		result = []
		for it in itetators:
			elem = next(it, sentinel)
			if elem is sentinel:
				return
			result.append(elem)
			yield tuple(result)

例:

x = [1, 2, 3, 4]
y = ['aaaa', 'bbbbb', 'ccccc']
z = (45, 34, 12, 90)
print(list(zip(x, y, z)))
print(list(zip(*zip(x, y, z))))  # *的作用是把上面生成的迭代器又再次拉链式的组合了该迭代器中的元素。
[(1, 'aaaa', 45), (2, 'bbbbb', 34), (3, 'ccccc', 12)]
[(1, 2, 3), ('aaaa', 'bbbbb', 'ccccc'), (45, 34, 12)]

l1 = [1,2,3,4,5,6]
l2 = ['aaaa','bbbbb','wendy','ccccc','sindy']
tu = ('**','***','****','*******')
b = filter(lambda x: x[0] > 2 and len(x[2]) > 4, zip(l1, l2, tu))
print(list(b))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值