每天学点Python之zip

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013291394/article/details/50426344

每天学点Python之zip


zip是Python中的一个内建函数,能够用来组合多个序列类型的数据。它会把传入的所有序列中下标相同的元素组成一个个元组,以最短的序列为基准。

压缩

所有的序列类型都可以进行压缩,最终的长度以最短的序列长度为准,不过字典在压缩时只会保存的它的键:

In[13]: a = [1,2,3]
In[14]: b = "abcde"
In[15]: c = {"one":1,"two":2}
In[16]: z = zip(a,b,c)
In[17]: print(z)
<zip object at 0x00000000041DCEC8>
In[18]: list(z)
Out[18]: [(1, 'a', 'one'), (2, 'b', 'two')]

如果只有一个序列压缩,那么同样会返回元组:

In[19]: a = [1,2,3]
In[20]: z = zip(a)
In[21]: list(z)
Out[21]: [(1,), (2,), (3,)]

解压

如果需要对压缩过的对象进行解压,只需要在之前添加一个星号*:

In[39]: z = zip(*zip("hello"))
In[40]: list(z)
Out[40]: [('h', 'e', 'l', 'l', 'o')]

示例

下面两小段代码是一个意思,都是将列表进行分段:

In[64]: list(zip(*[iter(seq)]*3))
Out[64]: [(1, 2, 3), (4, 5, 6), (7, 8, 9)]

In[57]: x = iter(range(1, 10))
In[58]: list(zip(x,x,x))
Out[58]: [(1, 2, 3), (4, 5, 6), (7, 8, 9)]

下面这个例子是将列表中的数据项进行复制扩展:

In[43]: x = [1, 2, 3]
In[44]: list(zip(*[x]*3))
Out[44]: [(1, 1, 1), (2, 2, 2), (3, 3, 3)]

下面这个例子是通过zip来进行字典的键值对翻转:

In[49]: m = {"a":1, "b":2, "c":3}
In[50]: r = dict(zip(m.values(),m.keys()))
In[51]: r
Out[51]: {1: 'a', 2: 'b', 3: 'c'}

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试