【问题标题】:Sum up only the second elements in a list of tuples [duplicate]仅总结元组列表中的第二个元素[重复]
【发布时间】:2016-04-25 19:51:29
【问题描述】:

假设我有这个元组列表:[('3', '20'), ('1', '50'), ('2', '50')],我将如何只总结每个元组中的第二个元素?所以在这个例子中,总和是 120。另外,我是否必须事先将数字转换为整数才能使 sum() 函数工作?

【问题讨论】:

    标签: python list integer sum tuples


    【解决方案1】:

    如果l 是您列出的,那么:

    sum(int(x[1]) for x in l)
    

    除了sum(...),您还可以使用sum((...))sum([...])。前者使用生成器表达式,后者创建一个临时列表(列表推导式)。

    【讨论】:

    • 您不必将生成器表达式括在括号中,也不必括在方括号中。 sum(int(x[1]) for x in l) 工作得很好。
    • @Delgan 在您撰写评论时已修改。 :-)
    【解决方案2】:

    你可以试试,

    tup = [('3', '20'), ('1', '50'), ('2', '50')]
    s= 0
    for i in tup: 
        s+= int(i[-1])
    

    【讨论】:

    • 这很有魅力,谢谢。很抱歉打扰以下问题,但您能澄清一下 [-1] 的作用吗?非常感谢。
    • @kraderic 当您在列表中使用负索引时,它从末尾而不是开头开始计数。所以i[-1] 是列表的最后一个元素。
    • @kraderic [-1] 指的是最后一个。在这种情况下,它与 [1] 相同。看stackoverflow.com/questions/509211/…这里的解释。
    • 但是,这个问题具体说的是“第二个元素”,而不是“最后一个元素”。在给出的示例中,它们是相同的,但通常情况并非如此。
    • 所以“i”是指元组中的单个对,然后 [-1] 表示它只注册每对中的最后一个元素?
    猜你喜欢
    • 1970-01-01
    • 2022-10-21
    • 1970-01-01
    • 2012-03-13
    • 2013-04-29
    • 2020-02-28
    • 1970-01-01
    • 2022-11-27
    • 1970-01-01
    相关资源
    最近更新 更多