zip
的功能
zip
的基本用法是将两个或多个可迭代对象
作为参数
(可以是字符串、列表、元组、字典、集合
等),返回一个zip对象
。这个zip对象是一个可迭代
的。Python3
版本返回的是对象
,例如:<zip object at 0x7fabbe8777d0>
,主要是为了减少内存
。通过list(zip(iterable...))
,即可转换为列表
Python2
版本返回的是列表
- 当
最短
的输入迭代
用完时,迭代器停止
。没有参数时,它返回一个空的迭代器
传递n个参数时
num_list = [1, 2, 3]
str_tuple = ('a', 'b', 'c')
result = zip(num_list, str_tuple)
print(result)
# print(list(result))
print(dict(result))
# print(set(result))
# print(tuple(result))
<zip object at 0x000001E89F46EBC0>
{1: 'a', 2: 'b', 3: 'c'}
不传参数
不传参数
时,返回一个对象
result = zip()
print(result)
<zip object at 0x000001C5046CE880>
传一个参数时
- 当
迭代对象
是字典
时,zip
的实际操作的对象是它的键
num_dict = {'1':'a', '2':'b', '3':'c'}
result = zip(num_dict)
print(list(result))
[('1',), ('2',), ('3',)]
- 不是字典时
num_list = [1, 2, 3]
result = zip(num_list)
print(list(result))
[(1,), (2,), (3,)]
传递长度不等的参数
当传递长度不等的参数时,以最短的参数为主
num_list = [1, 2, 3]
num_tuple = ('a','b')
result = zip(num_list, num_tuple)
print(list(result))
[(1, 'a'), (2, 'b')]
循环并列迭代
- 2个参数
num_list = [1, 2, 3]
num_tuple = ('a','b', 'c')
for k, v in zip(num_list, num_tuple):
print(k, v)
1 a
2 b
3 c
- 3个参数
num_list = [1, 2, 3]
num_tuple = ('a','b', 'c')
num_str = "ABC"
for k, v, S in zip(num_list, num_tuple, num_str):
print(k, v, S)
1 a A
2 b B
3 c C
建立字典
num_list = [1, 2, 3]
num_tuple = ('a','b', 'c')
result = zip(num_list, num_tuple)
print(dict(result))
{1: 'a', 2: 'b', 3: 'c'}
解压缩
在需要解压的参数前加个*
号
- 2个参数
num_list = [(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]
num,str1 = zip(*num_list)
print(num)
print(str1)
(1, 2, 3, 4)
('a', 'b', 'c', 'd')
- 3个参数
num_list = [(1, 'a', 'A'), (2, 'b', 'B'), (3, 'c', 'C'), (4, 'd', 'D')]
num,str1,STR1 = zip(*num_list)
print(num)
print(str1)
print(STR1)
(1, 2, 3, 4)
('a', 'b', 'c', 'd')
('A', 'B', 'C', 'D')