Python zip(*list)[num]为什么会把列表的一列提取出来

>>> info = [[1,2,3,4],[5,6,7,8]]

>>> key = zip(*info)[1]

>>> key

(2, 6)
不明白为什么会把这两个数提取出来

zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),第0个元组对应于所有参数的第0个元素,第1个元组对应于所有参数的第1个元素,依此类推,然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。
zip([1,2,3,4],[5,6,7,8])会返回[(1, 5), (2, 6), (3, 7), (4, 8)]
但是如果输入的参数在一个列表当中,比如[[1,2,3,4],[5,6,7,8]],就需要进行解包裹,就是在传递列表时,让列表的每一个元素对应一个位置参数。在调用func时使用*,是为了提醒Python:我想要把args拆成分散的多个个元素,分别传递给多个位置参数。
l = [[1,2,3,4],[5,6,7,8]]
zip(*l)所实现的功能与上面的代码相同,只不过输入的参数有列表接包裹得到。返回的结果中,第一个元素恰好对应于输入列表的第一列,因此对返回的结果进行索引可以得到输入列表对应的列。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-26
key = zip(*info)[1]这句的意思是 key = zip([1,2,3,4],[5,6,7,8])[1]

key的完整内容是[(1,5),(2,6),(3,7),(4,8)]
你提取下标为1的,那么就是(2, 6)本回答被提问者采纳
第2个回答  2014-06-12
Python中,zip(*info) 即 zip(*[[1, 2, 3, 4], [5, 6, 7, 8]]) 相当于 zip([1, 2, 3, 4], [5, 6, 7, 8])
等于[(1, 5), (2, 6), (3, 7), (4, 8)]
所以key是(2, 6)
相似回答