一、zip 函数
- zip 是 Python 中一个非常实用的内置函数,用于将可迭代的对象(如列表、元组、字典等)作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象(注意,返回的其实是一个迭代器)。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。
二、基本用法
1、两个列表
- 输出:这是一个迭代器,所以直接打印看到的是它的内存地址
- 要查看其内容,可以将其转换为列表
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
zipped = zip(list1, list2)
# 输出:这是一个迭代器,所以直接打印看到的是它的内存地址
# 要查看其内容,可以将其转换为列表
print(zipped)
print(list(zipped)) # 输出:[(1, 'a'), (2, 'b'), (3, 'c')]
2、三个列表
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
list3 = [True, False, True]
zipped = zip(list1, list2, list3)
print(list(zipped)) # 输出:[(1, 'a', True), (2, 'b', False), (3, 'c', True)]
3、长度不等的列表
list1 = [1, 2, 3, 4]
list2 = ['a', 'b', 'c']
zipped = zip(list1, list2)
print(list(zipped)) # 输出:[(1, 'a'), (2, 'b'), (3, 'c')]
- 注意,只有最短的列表的长度个元素被打包
4、解压缩(使用 *)
zipped = [(1, 'a'), (2, 'b'), (3, 'c')]
list1, list2 = zip(*zipped)
# 注意:zip(*) 返回的是元组的迭代器,需要再次使用 list() 转换
print(list(list1)) # 输出:[1, 2, 3]
print(list(list2)) # 输出:['a', 'b', 'c']
5、与字典一起使用
(注意,字典会被视为键的列表)
dict1 = {'a': 1, 'b': 2, 'c': 3}
list2 = [10, 20, 30]
zipped = zip(dict1, list2)
# 注意,这里 zip 会将字典的键作为可迭代对象
print(list(zipped)) # 输出:[('a', 10), ('b', 20), ('c', 30)]
- 注意,这里 zip 会将字典的键作为可迭代对象
- 如果使用字典的值进行 zip,需要先获取字典的值,如 zip(dict1.values(), list2)
三、资料
[叶阿猪]的博客:
https://blog.csdn.net/MAOZI8/article/details/139145672