gpt4 book ai didi

python - 以下代码中的 zip(*res) 在 python 中是什么意思?

转载 作者:太空宇宙 更新时间:2023-11-03 14:05:14 25 4
gpt4 key购买 nike

<分区>

这是 github 上 Allen Downey 的 Think Bayes 书中的一段代码:

def ReadData(filename='showcases.2011.csv'):
"""Reads a CSV file of data.
Args:
filename: string filename
Returns: sequence of (price1 price2 bid1 bid2 diff1 diff2) tuples
"""
fp = open(filename)
reader = csv.reader(fp)
res = []

for t in reader:
_heading = t[0]
data = t[1:]
try:
data = [int(x) for x in data]
# print heading, data[0], len(data)
res.append(data)
except ValueError:
pass

fp.close()
return zip(*res)

可以在这个 URL 看到整个文件:link on Github for this file.

我想弄清楚最后一行代码中的 zip(*res) 是什么意思?具体来说:

  1. “*”用作前缀时有什么作用。接下来
  2. zip 函数对 (*anything) 做了什么

我是 Python 的新手,所以我可能会问一些显而易见的问题。我在函数的文档字符串中看到作者的注释,它返回一个序列 (price1 price2 ...),但我不太清楚。

更新:继 James Rettie 的回答之后,这是我运行他在 Python 3.6 中提供的代码时得到的结果:

In [51]: zip(['a', 'b', 'c'], [1, 2, 3])
Out[51]: <zip at 0x1118af848>

而在 Python 2.7 中运行相同的代码会产生他提供的结果,如下所示:

In [2]: zip(['a', 'b', 'c'], [1, 2, 3])
Out[2]: [('a', 1), ('b', 2), ('c', 3)]

你能解释一下为什么吗?不同之处在于 Python 2.7 和 Python 3.6 对我来说很重要,因为我必须仍然支持 Python 2.7,但我想迁移到 3.6。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com