为什么 x,y = zip(\*zip(a,b)) 在 Python 中工作?

新手上路,请多包涵

好的,我喜欢 Python 的 zip() 函数。一直用它,它很棒。我时不时地想做 zip() 的反面,想想“我以前知道怎么做”,然后谷歌 python 解压缩,然后记住有人使用这个神奇的 * 解压缩元组的压缩列表。像这样:

 x = [1,2,3]
y = [4,5,6]
zipped = zip(x,y)
unzipped_x, unzipped_y = zip(*zipped)
unzipped_x
    Out[30]: (1, 2, 3)
unzipped_y
    Out[31]: (4, 5, 6)

这到底是怎么回事?那个神奇的星号在做什么?它还有什么地方可以应用,Python 中还有哪些其他令人惊奇的东西如此神秘且难以用谷歌搜索?

原文由 Mike Dewar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 373
2 个回答

星号执行 apply (在 Lisp 和 Scheme 中众所周知)。基本上,它获取您的列表,并以该列表的内容作为参数调用该函数。

原文由 C. K. Young 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题