2014-12-19 4 views
-2

Я пытаюсь изучить python, и я сделал этот код прайситом. Цель состоит в том, чтобы прочитать список, и если число нечетное, другой список получить его:int 'object is not itable - пытаюсь изучить python

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 

Но я получаю сообщение об ошибке:

'int' object is not iterable 

Может кто-нибудь мне помочь? Заранее спасибо!

+1

Что вы передали как 'numlist'? И можете ли вы показать пример ввода и что вы хотите, чтобы выход был? – CoryKramer

+0

Ваш код действительно завершится с 'UnboundLocalError' для' n', потому что вы еще не можете использовать 'n' при выполнении' len (numlist [n]) '. –

+0

Можете ли вы дать нам ** полную трассировку ** вашей ошибки, а также образец 'numlist', пожалуйста? –

ответ

0

Если я сохраню свой способ написания этой функции.

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 

Более практичный способ сделать это

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

или

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

Спасибо, я исправил свой ответ. – afrancais

0

Я сделал так:

def purify(numlist): 
    imp = [] 
    for n in range(0,len(numlist)): 
     if numlist[n] % 2 == 0: 
      imp.append(numlist[n]) 
    return imp 

Это работает! Спасибо вам, ребята!

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