如何将列表和整数一起添加/组合到列表中(Python)?

时间:2017-03-19 23:21:02

标签: python

我正在尝试使用elif语句中的数字在if语句中添加列表。如何将它们一起添加以获得结果输出?

["Anna", "Bob", "Kelly", "Morgan", 54]

输出应该类似于:

["Anna", "Bob", "Kelly", "Morgan"]

他们的名字按字母顺序排列,所有年龄都加在一起。

我知道if语句会给我这部分输出:

54

elif声明将给出这部分:

override func draw(_ rect: CGRect) {

    var rectPath = UIBezierPath(rect: rect)
    UIColor.blue.setFill()
    rectPath.fill()

    var path = UIBezierPath(ovalIn: rect)
    UIColor.white.setFill()
    path.fill()
}

我如何将这两者结合在一起?甚至可以组合if语句的输出和elif语句吗?

1 个答案:

答案 0 :(得分:1)

您只需添加以下行:

output.append(sumVal)

return语句之前的程序,以添加元组奇数部分的总和,如:

def sorting(tup1, tup2):
    output = []
    sumVal = 0
    wholeTup = tup1 + tup2 
    for i in range(0, len(wholeTup)):
        result = " "
        if i % 2 == 0 or i == 0:
            word = wholeTup[i].title()
            output.append(word)
            output.sort()     
        elif i % 2 != 0:
            sumVal = sumVal + wholeTup[i]
    output.append(sumVal) # append the total age to the final result
    return output

然而,您的代码相当不优雅 un-Pythonic 且效率低*。一些想法:

  • 您一直对列表进行排序,而将其作为后处理步骤进行排序则更有效;
  • 您可以简化if;和
  • 无需检查elif,因为else中的条件与elif中的条件完全相反,因此简单if就足够了言。

您可以使用生成器将整个程序转换为两个语句:

def sorting(tup1, tup2):
    wholeTup = tup1 + tup2 
    return sorted(wholeTup[i] for i in range(0,len(wholeTup),2)) + \
        [sum(wholeTup[i] for i in range(1,len(wholeTup),2))]

此处sorted(..)将捕获生成器 wholeTup[i] for i in range(0,len(wholeTup),2)的所有元素,并构造一个list元素已排序。在这里,发生器将发出位于偶数位置的所有元素。

另一方面,sum(..)将总结由生成器wholeTup[i] for i in range(1,len(wholeTup),2)产生的元素,并生成年龄的总和(位于奇数位置的元素)。我们使用该结果构造单个列表[..],并将追加sorted(..)调用的结果。这是我们return的最终结果。