Python Zip 函数

Python Zip 函数

描述

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。

我们可以使用 list() 转换来输出列表。

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 ***** 号操作符,可以将元组解压为列表。

语法

zip 语法:

zip([iterable, ...])

参数说明:

  • iterabl -- 一个或多个迭代器;

返回值

返回一个对象。

实例

以下实例展示了 zip 的使用方法:

image-20220106105009929

python 在列表,元组,字典变量前加号。。_l_l_jh的博客-CSDN博客_python 变量前加

可以发现,在列表前加*号,会将列表拆分成一个一个的独立元素,不光是列表、元组、字典,由numpy生成的向量也可以拆分;

zip是将一个或多个可迭代对象进行包装压缩,返回将结果是列表;

通俗的说:zip()压缩可迭代对象,*号解压可迭代对象;

最后需要注意的是:

  • 可迭代对象才可以使用*号拆分;
  • 带*号变量严格来说并不是一个变量,而更应该称为参数,它是不能赋值给其他变量的,但可以作为参数传递;
#给出一个字符串组成的列表
strsList = ["flower","fa","fba"]
#输出列表 ,查看当前类型
print(strsList)
print(type(strsList))
#看一下将列表strs压缩后的结果以及类型
#逐个输出压缩后的列表里的元素以及类型
print(zip(strsList))
print(type(zip(strsList)))
for tmp in zip(strsList):
    print(tmp)
    print(type(tmp))
print("\n")
#看一下将列表strs压缩后,再解压的结果

print(*zip(strsList))
print("\n")

# 查看给列表外面加一个*的结果
# 查看 *strs 里面的元素的类型
# for循环逐个查看
print(*strsList)
mylist = [*strsList]
for elm in mylist:
    print(type(elm))
print("\n")
# 查看 将*strs 压缩后的结果
# 逐个查看将*strs压缩后的每个元素以及类型
print(zip(*strsList))
for tmp in zip(*strsList):
    print(tmp)
    print(type(tmp))
print("\n")
# 查看 将zip(*strs)解压后的结果
# 逐个输出将zip(*strs)解压后里每个元素以及类型
print(*zip(*strsList))
mylist = [*zip(*strsList)]
for elm in mylist:
    print(elm)
    print(type(elm))

结果解析

['flower', 'fa', 'fba']
<class 'list'>  # 显然, strsList是一个由字符串组成的列表,其格式为list

<zip object at 0x000001519A63B7C8>
<class 'zip'> #将其压缩后 , 变成一个zip压缩包 , 其格式为zip 类型

('flower',)  #在压缩包里每个元素是一个tuple , 由‘字符串’和",“构成
<class 'tuple'>
('fa',)
<class 'tuple'>
('fba',)
<class 'tuple'>


('flower',) ('fa',) ('fba',) #将压缩包解压,就得到了里面的这三个tuple元素




flower fa fba  
<class 'str'>
<class 'str'>
<class 'str'> #给列表list外面加一个* ,我们得到了三个字符串元素,相当于是把列表给解压了



<zip object at 0x000001519A63BA48> 
('f', 'f', 'f')
<class 'tuple'>
('l', 'a', 'b')
<class 'tuple'> #然后我们在把这三个字符串元素进行压缩 , 得到了两个tuple元素 , 每一个元素的结果都是字符串相同位置的字母 , 这个结果和直接对三个字符串压缩的结果是一样的 ,也就是下列代码的结果是一样的
print(zip('flower','fa','fba'))
for tmp in zip('flower','fa','fba'):
    print(tmp)
    print(type(tmp))
print("\n")



('f', 'f', 'f') ('l', 'a', 'b')
('f', 'f', 'f')
<class 'tuple'>
('l', 'a', 'b')
<class 'tuple'> #我们将这三个字符串形成的压缩包解压 , 得到了里面的元素 ,元素的类型是tuple ,每一个元素的结果都是字符串相同位置的字母 

posted @ 2022-04-03 12:55  英飞  阅读(378)  评论(0编辑  收藏  举报