删除或跳过列表中的项目

时间:2015-05-12 22:06:41

标签: python list replace sum

我有一个CSV文件,需要删除或只是跳过或替换0列表中表示为None的一些丢失数据。 CSV文件中的Row1 = [1, 2, 3, 4, none, 5, 6, 7, 8, 9]row2 = [1, 2, 3, 4, 5, 6, none, 7, 8, 9]

counter=0

for lines in csv:

    list_all=lines.split(',')
    list_all=lines.strip()
    counter+=1
    for ch in range(len(list_all)):
        if list_all[ch]=='?':
            list_all.replace('?',0)
    list_0=float(list_all[0])
    list0.append(list_0)
    avelist0=(sum(list0)/counter)

我需要得到每列中所有值的总和;当然不包括None。我一直收到错误:

TypeError: Can't convert 'int' object to str implicitly. 

我还是Python的新手,如果可能的话,我想用for循环来做这件事。我无法使用列表推导。

因此,第一个列表的平均值为22.522.5为第二个列表。

1 个答案:

答案 0 :(得分:1)

因为您无法使用列表推导,所以您想要做的是列表中的map

l = [1,2,3,4,None,5,6,7,8,9] 
new_l = map(lambda x: 0 if x.lower().strip() == 'none' else int(x), l)
print new_l #  [1, 2, 3, 4, 0, 5, 6, 7, 8, 9]

然后,如果您想要对整个列表求和,请使用sum

sum(new_l) #  returns 45