这个问题已经在这里有了答案:????????????>????????????What does the star operator mean?????????????????????????????????????5个
这是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)
我试图弄清楚zip(* res)在代码的最后一行是什么意思?特别:
>“ *”用作前缀时会做什么.接下来
> zip函数对(*任何东西)有什么作用
我是Python的新手,所以我可能会问一些明显的问题.我在函数的文档字符串中看到了作者的注释,该注释返回了(price1 price2 …)的序列,但对我来说还不够清楚.
更新:跟着James Rettie的回答,这是我运行他在Python 3.6中提供的代码所得到的:
In [51]: zip(['a', 'b', 'c'], [1, 2, 3])
Out[51]:
在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.