文章目录
- zip() 函数
- python 3中zip()方法合并列表后生成的是 zip 对象
- 使用 list 方法可以将zip()变成列表。
- 使用 dict 方法可以将zip()变成字典。
- zip()元组对的数量以合并列表的最短长度为准
- zip()将列表和列表合并
- zip()将列表和元组合并
- zip()将列表和字符串合并
- zip()将字符串和字符串合并
- zip()将元组和元组合并
- 注意: zip()对象支持直接遍历,不需要先转成 list 或 dict:
- zip(*some_list)
- zip(*some_list) 方法可以实现元组列表的反向解压,只支持元组和列表,不支持 dict 直接解压。
- zip(*some_list) 反向解压列表
- zip(*some_list) 反向解压列元组
- zip(*some_list) 不支持直接反向解压列字典
zip() 函数
1、zip() 函数来可以把 2 个或多个列表合并,并创建一个元组对的列表,元组对的数量以合并列表的最短长度为准。
2、python 3中zip 方法合并列表后生成的是 zip 对象。
3、使用 list 方法可以将其变成列表。
4、使用 dict 方法可以将其变成字典。
5、实际上 zip 方法支持所有可迭代对象(字符串、列表、元祖、字典),而不仅仅是列表。利用这个特性,可以很容易创建各种字典,包括很复杂的字典。
python 3中zip()方法合并列表后生成的是 zip 对象
l1 = [ 1, 2, 3 ]
l2 = [ 'x', 'y', 'z']
l3 = [ 'x', 'y' ]
zip(l1, l2)
<zip object at 0x031D6828>
使用 list 方法可以将zip()变成列表。
l1 = [ 1, 2, 3 ]
l2 = [ 'x', 'y', 'z']
l3 = [ 'x', 'y' ]
print(list(zip(l1, l2)))
[(1, 'x'), (2, 'y'), (3, 'z')]
使用 dict 方法可以将zip()变成字典。
l1 = [ 1, 2, 3 ]
l2 = [ 'x', 'y', 'z']
l3 = [ 'x', 'y' ]
print(dict(zip(l1,l3)))
{1: 'x', 2: 'y'}
zip()元组对的数量以合并列表的最短长度为准
l1 = [ 1, 2, 3 ]
l2 = [ 'x', 'y', 'z']
l3 = [ 'x', 'y' ]
print(list(zip(l1, l3)))
[(1, 'x'), (2, 'y')]
zip()将列表和列表合并
l1 = [1, 2, 3]
l2 = ['a','b','c']
print(dict(zip(l1, l2)))
输出结果:
{1: 'a', 2: 'b', 3: 'c'}
zip()将列表和元组合并
l1 = [1, 2, 3]
l2 =('a','b','c')
print(dict(zip(l1, l2)))
输出结果:
{1: 'a', 2: 'b', 3: 'c'}
zip()将列表和字符串合并
l1 = [1, 2, 3]
str1 = "abc"
print(dict(zip(l1, str1)))
输出结果:
{1: 'a', 2: 'b', 3: 'c'}
zip()将字符串和字符串合并
l1 ='abc'
l2 ='xyz'
print(dict(zip(l1, l2)))
输出结果:
{'a': 'x', 'b': 'y', 'c': 'z'}
zip()将元组和元组合并
l1 = (1, 2, 3)
l2 =('a','b','c')
print(dict(zip(l1, l2)))
输出结果:
{1: 'a', 2: 'b', 3: 'c'}
注意: zip()对象支持直接遍历,不需要先转成 list 或 dict:
name = ["John", "Jim", "Lucy"]
year = [1983, 1985, 1995]
for name, year in zip(name, year):
print("{} - {}".format(name, year))
John - 1983
Jim - 1985
Lucy - 1995
zip(*some_list)
zip(*some_list) 方法可以实现元组列表的反向解压,只支持元组和列表,不支持 dict 直接解压。
zip(*some_list) 反向解压列表
l1 = [("John", 1995), ("Lucy", 2000), ("Max", 1985)]
name, year = zip(*l1)
print(name)
print(year)
输出结果:
('John', 'Lucy', 'Max')
(1995, 2000, 1985)
zip(*some_list) 反向解压列元组
l1 = (("John", 1995), ("Lucy", 2000), ("Max", 1985))
name, year = zip(*l1)
print(name)
print(year)
输出结果:
('John', 'Lucy', 'Max')
(1995, 2000, 1985)
zip(*some_list) 不支持直接反向解压列字典
ict1 ={'John': 1995, 'Lucy': 2000, 'Max': 1985}
print(dict1)
name, year = zip(*dict2)
print(name)
print(year)
Traceback (most recent call last):
File "/home/10261018@zte.intra/VScode/zip.py", line 107, in <module>
name, year = zip(*dict1)
ValueError: too many values to unpack (expected 2)