2015-03-11 4 views
1

Итак, я играю и пытаюсь суммировать подобные термины только в том случае, если это определенный пользовательский термин. Например, в списке L = [1,2,2,3,4], а затем я говорю, что мне нужна сумма для всех терминов, которые равны 2, и поэтому два раза отображаются дважды, и я знаю 2+2=4, поэтому он будет возвращаться. 4.Как суммировать как числа в списке python

Мне кажется, что это намного проще чем я делаю это, чтобы быть, до сих пор:

def main(): 
    L = eval(input("Please enter the list") 
    num = eval(input('Enter the number that has like terms')) 
    sloppyway = [] 
    for nums in L: 
     if nums == num: 
      sloppyway.append(nums) 
    return (sum(sloppyway)) 

Я думаю, что это будет работать, но я чувствую, что есть изящнее более элегантный способ сделать это. какие-либо предложения?

ответ

6

Вы можете использовать sum функции с выражением генератора следующим образом:

>>> L = [1,2,2,3,4] 
>>> num=2 
>>> sum(i for i in L if i==num) 
4 

Или как менее эффективным способом вы можете использовать filter функции:

>>> sum(filter(lambda x :x==2,L)) 
4 

Но обратите внимание, что это может быть полезно, если ваше состояние было более сложным!

+0

Мне нравится лучший способ сделать это, это было в значительной степени именно то, что я искал, спасибо! –

+0

@BobbyB yep! пожалуйста! – Kasramvd

1
x= [1,2,2,3,4] 
y=2 
print sum([k for k in x if k==y]) 

Просто со списком осмысление.

Смежные вопросы