Python中的zip
和unzip
操作可以用来对多个列表、元组或其他可迭代对象进行合并或解压缩操作。
zip操作
zip
用于将多个可迭代对象中的元素一一对应地合并到一个元组中,从而返回一个新的可迭代对象。以下为zip
的基本格式:
zip(*iterables)
其中*iterables
代表的是若干个可迭代对象,可以是列表、元组等。下面是zip
的一个简单示例:
a = [1,2,3,4]
b = ['a','b','c','d']
c = zip(a,b)
print(list(c)) # [(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]
在这个示例中,zip
将列表a
和b
中的元素一一对应地合并到了一个元组中,然后再将所有元组合并到一个新的可迭代对象中,最后通过list
将新的可迭代对象转换为列表类型。
需要注意的是,当可迭代对象长度不同时,zip
只会保留最短的长度对应的元素。例如:
a = [1,2,3]
b = ['a','b','c','d']
c = zip(a,b)
print(list(c)) # [(1, 'a'), (2, 'b'), (3, 'c')]
在这个示例中,b
列表中多余的元素没有被保留,因为其长度比a
列表短,zip
只会保留最短的长度对应的元素。
unzip操作
unzip
与zip
相反,是用来从一个可迭代对象中解压出多个独立的列表或元组。unzip
的基本格式如下:
zip(*iterables)
其中*iterables
代表的是一个可迭代对象,每个元素都是一个包含多个元素的可迭代对象。下面是unzip
的一个简单示例:
a = [1,2,3,4]
b = ['a','b','c','d']
c = zip(a,b)
d, e = zip(*c)
print(d) # (1, 2, 3, 4)
print(e) # ('a', 'b', 'c', 'd')
在这个示例中,首先使用zip
将列表a
和b
中的元素一一对应地合并到了一个元组中,然后再使用unzip
将这个元组解压出来,分别赋值给了变量d
和e
。
需要注意的是,unzip
的返回值是多个列表或元组,因此需要使用多个变量来接收。如果只需要其中的某一个列表或元组,可以使用索引或切片。例如:
a = [1,2,3,4]
b = ['a','b','c','d']
c = zip(a,b)
d = list(zip(*c))[0]
print(d) # (1, 2, 3, 4)
在这个示例中,为了得到a
列表,我们使用list(zip(*c))[0]
,这个表达式返回的是zip(*c)
解压后的第一个元素,即元组(1, 2, 3, 4)
,最后通过list
将其转换为列表类型。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python中zip和unzip数据的方法 - Python技术站