python函数--zip函数

zip函数的原型为:zip([iterable, …])
参数iterable为可迭代的对象,并且可以有多个参数。该函数返回一个以元组为元素的列表,其中第 i 个元组包含每个参数序列的第 i 个元素。返回的列表长度被截断为最短的参数序列的长度。只有一个序列参数时,它返回一个1元组的列表。没有参数时,它返回一个空的列表

a=[1,2,3,4,5]
b=(11,223,3,45,5)
c="zhang"
zz=zip(a,b,c)
print(list(zz))#[(1, 11, 'z'), (2, 223, 'h'), (3, 3, 'a'), (4, 45, 'n'), (5, 5, 'g')]

当没有参数的时候、当只有一个参数的时、当多个参数长度不同的时候

zzz=zip()
print(list(zzz))#[]

a=[1,2,3]
zzzz=zip(a)
print(list(zzzz))#[(1,), (2,), (3,)]

a=[1,2,3]
b=[1,2,3,4]
c=[1,2,3,4,5]
zz1=zip(a,b,c)
print(list(zz1))#[(1, 1, 1), (2, 2, 2), (3, 3, 3)]

zip() 和 * 操作符一起操作可以用来 unzip 一个列表,看下面的代码

a=[1,2,3]
b=[4,5,6]
c=[7,8,9]
zz=zip(a,b,c)
print((zz))#<zip object at 0x000002ADE4C68808>。
# 注意这里不能打印print(list(zz))#[(1, 4, 7), (2, 5, 8), (3, 6, 9)]不然下一句打印不出来因为下一句的入参为对象
#print(list(zip(*zz)))#[(1, 2, 3), (4, 5, 6), (7, 8, 9)]

x,y,z=zip(*zz)#zz也为对象。如果放开print(list(zip(*zz)))这句程序也会报错
print(x)#(1, 2, 3)
print(y)#(4, 5, 6)
print(z)#(7, 8, 9)

注意这里输出的每个都是元组,而不一定是原来的类型,但是值不会发生变化(除非原来的参数列表长度不一样,看下面的代码)

a=[1,2,3]
b=[4,5,6,7]
c=[8,9,10,11,12]
zz=zip(a,b,c)
print(zz)
#print(list(zz))#[(1, 4, 8), (2, 5, 9), (3, 6, 10)]

x,y,z=zip(*zz)
print(x)
print(y)
print(z)
# 输出:
# (1, 2, 3)
# (4, 5, 6)
# (8, 9, 10)

unzip后的列表b和c的值都少了

把两个列表转化为一个字典

seq = ['one', 'two', 'three']
seq1=[1,2,3]
print(list(zip(seq,seq1)))#[('one', 1), ('two', 2), ('three', 3)]
print(dict(zip(seq,seq1)))#{'one': 1, 'three': 3, 'two': 2}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值