扬州手机网站建设,网站建设与维护参考文献,移动互联网的定义,网站建设中间件收费在 Python 里#xff0c;zip() 函数能够把多个可迭代对象#xff08;像列表、元组、字符串等#xff09;中对应的元素组合成元组#xff0c;最终返回一个由这些元组构成的迭代器。下面为你详细介绍它的用法#xff1a;
基本语法
zip(*iterables)这里的 *iterables 表示接…在 Python 里zip() 函数能够把多个可迭代对象像列表、元组、字符串等中对应的元素组合成元组最终返回一个由这些元组构成的迭代器。下面为你详细介绍它的用法
基本语法
zip(*iterables)这里的 *iterables 表示接受多个可迭代对象作为参数。
简单示例
下面展示了如何使用 zip() 函数将两个列表进行配对
names [Alice, Bob, Charlie]
ages [25, 30, 35]zipped zip(names, ages)
print(list(zipped)) # 输出[(Alice, 25), (Bob, 30), (Charlie, 35)]当有多个可迭代对象时zip() 函数会从每个可迭代对象中依次取出元素组合成元组。
处理不同长度的可迭代对象
若可迭代对象的长度不一致zip() 会以最短的可迭代对象为标准来截断结果
names [Alice, Bob] # 长度为 2
ages [25, 30, 35] # 长度为 3zipped zip(names, ages)
print(list(zipped)) # 输出[(Alice, 25), (Bob, 30)]解压操作
借助 * 操作符和 zip() 函数可以实现对已组合的元素进行解压
pairs [(Alice, 25), (Bob, 30)]
names, ages zip(*pairs)print(names) # 输出(Alice, Bob)
print(ages) # 输出(25, 30)与循环结合使用
在循环中zip() 函数非常实用能够同时遍历多个可迭代对象
names [Alice, Bob, Charlie]
ages [25, 30, 35]for name, age in zip(names, ages):print(f{name} is {age} years old.)# 输出
# Alice is 25 years old.
# Bob is 30 years old.
# Charlie is 35 years old.处理多个可迭代对象
zip() 函数可以处理任意数量的可迭代对象
names [Alice, Bob, Charlie]
ages [25, 30, 35]
cities [New York, London, Paris]zipped zip(names, ages, cities)
print(list(zipped))
# 输出[(Alice, 25, New York), (Bob, 30, London), (Charlie, 35, Paris)]使用 itertools.zip_longest
要是你希望在处理不同长度的可迭代对象时以最长的对象为标准缺失的部分用指定值填充可以使用 itertools.zip_longest在 Python 2 中名为 izip_longest
from itertools import zip_longestnames [Alice, Bob] # 长度为 2
ages [25, 30, 35] # 长度为 3zipped zip_longest(names, ages, fillvalueNone)
print(list(zipped)) # 输出[(Alice, 25), (Bob, 30), (None, 35)]注意事项
返回的是迭代器在 Python 3 中zip() 返回的是一个迭代器这意味着它是惰性求值的。如果需要将结果存储下来或者多次使用建议将其转换为列表如 list(zip(...))。内存效率高由于 zip() 返回的是迭代器在处理大规模数据时它的内存效率更高。元素顺序zip() 函数会按照可迭代对象中元素的原有顺序进行组合。