zip(list)和zip(* list)之间的区别

这个问题在这里已经有了答案:

  • Star运算符是什么意思? [重复] 5个答案

  • zip想要一堆参数一起压缩,但你拥有的是一个参数(一个列表,其元素也是列表)。 *在函数调用中“解包”一个列表(或其他迭代),使其每个元素成为一个单独的参数。 所以如果没有* ,你在做zip( [[1,2,3],[4,5,6]] ) 。 用* ,你在做zip([1,2,3], [4,5,6])


    *运算符在函数调用语句中解压参数。

    考虑这一点

    def add(x, y):
       return x + y
    

    如果你有一个列表t = [1,2]则可以说add(t[0], t[1])其是不必要的或冗长可以“解压” t使用成独立的参数*操作者像这样add(*t)

    这就是你的例子中发生的事情。 zip(p)就像运行zip([[1,2,3],[4,5,6]]) 。 Zip在这里只有一个参数,所以它只是将它作为一个元组返回。

    zip(*p)就像运行zip([1,2,3], [4,5,6]) 。 这与运行zip(p[0], p[1])类似,您可以获得预期的输出。


    虽然这不是你问的问题的答案,但它应该有所帮助。 由于zip用于组合两个列表,因此您应该按照此list(zip(p[0], p[1]))来完成您所期望的操作。

    链接地址: http://www.djcxy.com/p/53635.html

    上一篇: Difference between zip(list) and zip(*list)

    下一篇: How to Correctly Use Lists in R?