The int object is not iterable - try to learn python

advertisements

I'm trying to learn python and I made this code to pratice. The objective is to read a list and if number is odd, another list receive it:

def purify(numlist):
    imp = [] #list that receive the odd numbers
    for n in range(0,len(numlist[n])): #travel a list of numbers inputted by user
        if n % 2 != 0: #verify if number is pair or odd
            imp = numlist[n] #assigns odd numbers to the new list
    return imp #return list of odd numbers

But I'm receiving an error:

'int' object is not iterable

Can anyone help me? Thanks in advance!


If I keep your way of writing this function.

def purify(numlist):
    imp = []
    # numlist is iterable. range builtin would list all integers between 0 and the value.
    for n in numlist:
         # As pointed out in comments, the n variable will receive each number of the list iteratively. It is NOT the length of the list.
        if n % 2 != 0:
            # append method will add the element to the list. if you use assignemnt (=),
            # your variable imp will become an integer.
            imp.append(n)
    return imp

The more practical way to do is

imp = filter(lambda n: n % 2 != 0, numlist)  # using a python built-in

or

imp = [n for n in numlist if n % 2 != 0]  # using list comprehension