如何编写类似list(zip(...))的函数?

时间:2017-10-11 14:12:59

标签: python python-3.x function

a = [[1, 1], [0, 0], [1, 1]]
b = [[2, 2], [3, 3], [4, 4]]

def zippy(*args):
  return list(zip(args))

print(zippy(a, b))
>>> [([[1, 1], [0, 0], [1, 1]],), ([[2, 2], [3, 3], [4, 4]],)]

print(list(zip(a, b)))
>>> [([1, 1], [2, 2]), ([0, 0], [3, 3]), ([1, 1], [4, 4])]

有人请向我解释为什么我没有得到两者完全相同的输出。不应该print(list(zip(a, b)))返回与print(zippy(a, b))相同的结果,因为该函数正在返回正在打印的内容,即list(zip(a, b))

1 个答案:

答案 0 :(得分:9)

args是一个包含传递参数的元组。您应该使用'splat'运算符解压缩,以便zip处理元组中的项目(参数),而不是args本身:

def zippy(*args):
    return list(zip(*args))
#                   ^