如何对含文本字段的列表列求和

3 投票
4 回答
1286 浏览
提问于 2025-04-16 11:37

假设我有一个下面这样的Python列表:

list =  [ ['text',2,3,4], ['text2',4,5,6] ]
y= map(sum,zip(*list))
print y 

这会导致整数和字符串的错误。

我想要把所有的'text'去掉,然后把剩下的列加起来。 答案是:我想要[6, 8, 10]。 我注意到这些字段看起来像整数,但其实是字符串,比如4和'4'。

4 个回答

1
y = map(lambda x: sum(int(k) for k in x[1:]),
        zip(*list))

如果你还想处理小数,可以把它改成 float(),而不是 int()

3
>>> map(sum, zip(*list)[1:])
[6, 8, 10]

>>> list =  [ ['text','2','3','4'], ['text2','4','5','6'] ]
>>> map(sum , [map(int,i) for i in zip(*list)[1:]] )
[6, 8, 10]
>>>

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

4

In [111]: lst =  [ ['text',2,3,4], ['text2',4,5,6] ]

In [112]: import operator

In [113]: print(map(operator.add,*lst))
['texttext2', 6, 8, 10]

如果你事先不知道哪些列包含文本,那么你可以使用一个尝试..异常处理的方式来处理这些文本:

lst =  [ ['text',2,3,4], ['text2',4,5,6] ]
result=[]
for column in zip(*lst):
    try:
        result.append(sum(map(int,column)))
    except ValueError:
        pass
print(result)
# [6, 8, 10]

撰写回答