python3.5中关于内置函数zip/*zip 解压问题

1、查阅了不少资料,没有得到相关讯息——python3.5中的关于结合zip()函数创建dict问题。
2、首先py3.0开始,zip()函数已经不返回list,python已经把它定义为iterable,有点类似range()的改动,这点了解了。
但是在使用 zip(*dict)函数却不通过

>>> a=[1,2,3]
>>> b=[4,5,6]
>>> c=[7,8,9]
>>> zipped=zip(a,b,c)
>>> list(zipped)
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
>>> zip(*zipped)
<zip object at 0x0000000003B7AC88>
>>> list(zip(*zipped))
[]

按照py2.0的规则,应该返回下面的二维矩阵式,但实际结果确是 [ ]

>>> zip(*zipped)       
[(1, 2, 3), (4, 5, 6),(7,8,9)]

既然zip(a,b,c)要写成list(zip(a,b,c))才能返回结果,那list(zip(*zipeed))不行吗?

阅读 4.4k
3 个回答

额。。。请搞清楚,你现在的zipped对象到底是什么?

zipped=zip(a,b,c)

其实没太看懂你的code,但是结合zip创建dict如下:

a=[1,2,3]
b=[4,5,6]
zipped=zip(a,b)
d = dict(zipped)
print(d) # {1: 4, 2: 5, 3: 6}
>>> a=[1,2,3]
>>> b=[4,5,6]
>>> c=[4,5,6,7,8]
>>> zipped=list(zip(a,b))
>>> print(zipped)
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zip(a,b))
<zip object at 0x7f2b1eaf2ec8>
>>> list(zip(*zip(a,b)))
[(1, 2, 3), (4, 5, 6)]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题