2013-06-26 2 views
2
def sum_elements(l): 
    sum = 0 
    string = "" 
    k = 0 
    for i in l: 
     if type(i) is int: 
      sum = sum + l[k] 
      k += 1 
     elif type(i)is str: 
      string = string + str(l[k]) 
      k += 1 
    print "sum of integers in list" + str(sum) 
    print "sum of strings in list" + string 

Python имеет встроенную функцию sum, чтобы найти сумму всех элементов списка. В случае, если список является целым числом sum_elements([1, 2, 3]), он вернется. 6. sum функция работает и для списка строк. sum_elements(["hello", "world"]) возвращение helloworld. Я написал реализацию для встроенной функции sum в приведенном выше коде. Оно работает.Встроенная функция суммы в python

Я новичок в Python, я просто хочу знать, правильно ли это или есть ли лучший подход?

Есть ли какие-либо ссылки для исходного кода встроенных функций python?

ответ

1

Вам не нужно обращаться к элементу по его индексу. Если список не пуст, и все элементы одного и того же типа, вы можете закодировать следующим образом:

>>> def sum_elements(l): 
...  s = l[0] 
...  for element in l[1:]: 
...   s += element 
...  return s 
... 
>>> sum_elements([1, 2, 3]) 
6 
>>> sum_elements(['hello', 'world']) 
'helloworld' 
4
from operator import add 
def sum_elements(l): 
    return reduce(add, l)