Python 如何使用文本字段对列表中的列求和

Python 如何使用文本字段对列表中的列求和,python,sum,Python,Sum,假设我有一个Python列表,如下所示: list = [ ['text',2,3,4], ['text2',4,5,6] ] y= map(sum,zip(*list)) print y 给出int/str错误 如何弹出所有行中的所有“文本”并对其余列求和。 答:我在找[6,8,10] 我注意到这个字段看起来像int,但是是str.4和'4' y = map(lambda x: sum(int(k) for k in x[1:]), zip(*list)) 如果还需要小

假设我有一个Python列表,如下所示:

list =  [ ['text',2,3,4], ['text2',4,5,6] ]
y= map(sum,zip(*list))
print y 
给出int/str错误

如何弹出所有行中的所有“文本”并对其余列求和。 答:我在找[6,8,10] 我注意到这个字段看起来像int,但是是str.4和'4'

y = map(lambda x: sum(int(k) for k in x[1:]),
        zip(*list))
如果还需要小数,可以将其改为
float()
,而不是
int()


如果事先不知道哪些列包含文本,则可以使用try..except块来处理文本:

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]

注意:我最近做的Haskell太多了。;-)

请参见编辑,我如何确保所有字段都为int,对于类似于['text'、'2'、'3'、'4']的问题,仅供参考:如果我希望结果返回一个干净的lst,如[[2,3,4]、[4,5,6],我会做哪些更改?删除sum?@user428862:对。如果删除
,则
结果将等于
[[2,4],[3,5],[4,6]
。要将其转换为
[[2,3,4],[4,5,6]
,您可以使用
zip(*(结果))
。第一列总是文本,其余列总是数字吗?这是从speadsheet/CSV文件中得到的吗?@Mikel,1和7。。。如果我计算出来,我可以根据需要对wehre进行切片。需要修复一些字段是文本。请参阅注释@unutbuOh。。。你的“数字”实际上是字符串。。。这让事情变得更烦人。我会尝试编辑一些对它有用的东西。
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]
>>> 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]
>>>
def tail(l):
    return l[1:]

map(sum, zip(*map(tail, list))