I agree with Peter: * iterate over the list directly * use %10 instead of string conversion + slice (*) use genexps
Good luck, Matteo On Tue, Nov 9, 2010 at 8:18 PM, Terry Reedy <tjre...@udel.edu> wrote: > On 11/9/2010 2:00 PM, Matty Sarro wrote: > >> I'm working on one of the puzzles on pyschools.com >> <http://pyschools.com>, and am trying to figure out if I can make my >> solution a bit more elegant. > > Definitely > >> def getSumOfLastDigit(numList): >> sumOfDigits=0 >> for i in range(0, len(numList)): >> num=str(numList.pop()) > > This is an awkward way to iterate through a list ;-) > >> sumOfDigits+=int(num[-1:]) >> return sumOfDigits > >> Write a function: getSumOfLastDigit(numList) that takes in a list of >> positive numbers and returns the sum of all the last digit in the list. >> >> *Examples* >> >>> getSumOfLastDigit([12, 23, 34]) >> 9 >> >>> getSumOfLastDigit([2, 3, 4]) >> 9 >> >>> getSumOfLastDigit([1, 23, 456]) >> 10 > > # Straightforward version of what you did > > def getSumOfLastDigit(numList): > sumOfDigits=0 > for i in numList: > sumOfDigits+=int(str(i)[-1:]) > return sumOfDigits > > print(getSumOfLastDigit([12, 23, 34]), > getSumOfLastDigit([2, 3, 4]), > getSumOfLastDigit([1, 23, 456]) ) > # 9 9 10 > > # Use generator expression with built-in sum function > > def getSumOfLastDigit(numList): > return sum(int(str(i)[-1:]) for i in numList) > > print(getSumOfLastDigit([12, 23, 34]), > getSumOfLastDigit([2, 3, 4]), > getSumOfLastDigit([1, 23, 456]) ) > # 9 9 10 > > -- > Terry Jan Reedy > > -- > http://mail.python.org/mailman/listinfo/python-list > -- Matteo Landi http://www.matteolandi.net/ -- http://mail.python.org/mailman/listinfo/python-list