我不太清楚怎么问这个问题,而且我对编程也不是很有经验,所以你必须原谅我。无论如何,我有一个问题。基本上,我需要得出一些数字的总和以及平均值。
程序应该有用户输入值。他们输入一个月和与该月相关的数字,然后我需要得到平均值。所以我有一个大列表,然后在该列表中列出。它基本上看起来像这样:
months = [["January", 3.45], ["February", 7.1865], ["March", 4.56]]
我想知道的是,如何在每个列表中挑出第二个元素? 我在想我可以使用 for 循环并将数字编译到一个单独的列表中,但我试过了,但无法正确计算。
请您参考如下方法:
不妨将其作为答案而不是评论。 zip 函数有点像 zipper ,将匹配的元素组合在一起:
>>> zip([1,2,3],[4,5,6])
<zip object at 0xb6e5beec>
>>> list(zip([1,2,3],[4,5,6]))
[(1, 4), (2, 5), (3, 6)]
使用 * 运算符,它基本上将 f(*[a,b]) 转换为 f(a,b),我们可以倒退:
>>> list(zip(*(zip([1,2,3],[4,5,6]))))
[(1, 2, 3), (4, 5, 6)]
因此我们可以使用 zip 来拆分您的列表:
>>> list(zip(*months))
[('January', 'February', 'March'), (3.45, 7.1865, 4.56)]
>>> monthnames, numbers = zip(*months)
>>> monthnames
('January', 'February', 'March')
>>> numbers
(3.45, 7.1865, 4.56)
如果您只关心其中一个,这会有点低效,但这是一个需要熟悉的有用习惯用法。
