如何在python中过滤列表

2024-03-27 20:12:43 发布

您现在位置:Python中文网/ 问答频道 /正文

如何过滤我的列表,这样我就可以创建一个单独的整数列表,这样我以后就可以把它们加起来了。你知道吗

我的尝试:

dList=  [['A1', 24],    ['A2',  22],    ['A3',  12],    ['A4',  20],    ['A5',  40],    ['A6',  62],    ['A7',  80],    ['A8',  12],    ['B1',  145],   ['B2',  127],   ['B3',  26],    ['B4',  25],    ['B5',  91],    ['B6',  38],    ['B7',  21],    ['B8',  12],    ['C1',  122],   ['C2',  87],    ['C3',  36],    ['C4',  3], ['D1',  0], ['D2',  5], ['D3',  55],    ['D4',  62],    ['D5',  98],    ['D6',  32]]

def totalWales(dList):
    sum = 0
    numList = filter(operator.isNumberType, dList)
    for x in numList:
        sum = sum + int(numList)
    print "Total wales: ", numList

Tags: a2列表a1整数b2a3b1a4
3条回答

你可以使用一些zip魔法:

dList= [['A1', 24], ['A2', 22], ['A3', 12], ['A4', 20], ['A5', 40], ['A6', 62], ['A7', 80], ['A8', 12], ['B1', 145], ['B2', 127], ['B3', 26], ['B4', 25], ['B5', 91], ['B6', 38], ['B7', 21], ['B8', 12], ['C1', 122], ['C2', 87], ['C3', 36], ['C4', 3], ['D1', 0], ['D2', 5], ['D3', 55], ['D4', 62], ['D5', 98], ['D6', 32]]
numbers = zip(*dList)[1]
sum(numbers)

这里zip选取每个列表中的第一个和第二个元素,并将它们放在单独的列表中,然后索引[1]将得到数字。你知道吗

如果你只关心总数,那么这就行了

>>> sum(num for _,num in dList)
1257

顺便说一下

operator.isNumberType(obj)

Deprecated since version 2.7: Use isinstance(x, numbers.Number) instead.

#Create a list with the numbers:
numList = [numbers for letters, numbers in dList]

#Set the result of the sum o the numbers to a variable:
result = sum(numList)

#Or if you just need the sum of the numbers:
result = sum([numbers for letters, numbers in dList])

相关问题 更多 >