zip()和*zip()

本文介绍了Python中的zip()函数和*zip()的使用。zip()函数用于将多个可迭代对象的元素组合成元组,并返回元组列表。*zip()则用于解压zip对象,通常配合print()使用以显示结果。当迭代器元素数量不一致时,返回的列表长度与最短对象相同。可以使用list、set、tuple等转换zip对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

zip():压缩

*zip():解压

zip() 函数:用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表,即元组列表

但实际操作中,zip() 返回的是一个对象,在 idle 中并不将它原本的面貌展示出来。如下:

zip(a,b):将a和b中的元素对应组合成元组。结果:(1,4),(2,5),(3,6)。而要想看到这个结果,需用*zip()函数

*zip(a,b):先将a和b中的元素对应组合成元组形成结果,再将这个结果解压,即 * 表示解压。但不输出,需借助print打印出来:

(此语句仅用来查看zip(a,b)的真正面貌,这三个元组之间没有逗号)

但若先 t = zip(a,b),再print(*t)的话,没有任何返回值,因为*zip()中的 * 和zip是连用的,不能将它们分开用。而print(*zip(t))是另一种结果,即print(*zip(zip(a,b))):

将 t 即 (1,4)  (2,5)  (3,6)这三个参数与空进行组合成元组

不能直接用*zip(a,b),否则:

可以用list、set、tuple对zip(a,b)进行转化。如:list(zip(a,b))的结果为 [ (1,4) , (2,5) , (3,6) ]。再如:set(zip(a,b))的结果为 { (1,4) , (2,5) , (3,6) },但若集合中有相同的元组,则只保留一个(因为集合的元素是不重复性),为避免此情况,一般用 list 进行转化

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同

 

自己发挥部分

# -*- coding:utf-8 -*-
# @Time       :2021-5-27 22:02
# @AUTHOR     :MUFENG12138
# @SOFTWARE   :lxf_train

# 请把两个列表提取作为字典
keys = ['name', 'age', 'city', '微信公众号']
values = ['CoCo', 18, 'ShenZhen', 'mufeng12138']
ans = {'name': 'CoCo', 'age': 18, 'city': 'ShenZhen', '微信公众号': 'mufeng12138'}

an = zip(keys, values)
# 将压缩的数据转换为字典
print(dict(an))
# x, y=zip(*zip(an))

# 组合并用元组的格式输出
print(*zip(keys, values))

失败的尝试
print(*zip(an))
print(list(*zip(an)))

# 三个参数与空元素组成新元组。还不太懂
print(*zip(zip(keys, values)))


# print(x)

# https://www.cnblogs.com/kenny-feng/p/11368477.html
# https://www.runoob.com/python/python-func-zip.html

结果如下

{'name': 'CoCo', 'age': 18, 'city': 'ShenZhen', '微信公众号': 'mufeng12138'}
('name', 'CoCo') ('age', 18) ('city', 'ShenZhen') ('微信公众号', 'mufeng12138')

(('name', 'CoCo'),) (('age', 18),) (('city', 'ShenZhen'),) (('微信公众号', 'mufeng12138'),)
[]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值