2017-11-11 115 views
-2

我想甚至高達一個數量上限寫入Python中的列表。這段代碼有什麼問題?我該如何解決它?使用下面的代碼</p> <pre><code>def odd_count(n): arr = list(50) for i in range(0,n,2): arr[i] = i return arr </code></pre> <p>我流汗錯誤sayng <code>TypeError: 'int' object is not iterable</code>寫奇數數組在Python

+1

你的標題說,你想奇數,你的身體甚至說。這是什麼? – ShadowRanger

+0

http://idownvotedbecau.se/beingunresponsive – klutt

回答

4

此行引發上述異常

arr = list(50) 

list期望一個iterable對象(東西,有一個__iter__()方法)。改爲傳遞int

要創建一個大小爲50的列表,你可以使用*經營者名單上:

arr = [None] * 50 

這將創建一個設置爲None所有50個元素的列表。

解決你的問題更Python的方式是直接通過range對象爲list構造,如:

def odd_count(n): 
    return list(range(1,n+1, 2)) 

print(odd_count(50)) 
0

可以初始化括號中的列表。在for循環中,使用.append()。最終的代碼應該是

def odd_count(n): 
    arr = [] 
    for i in range(0,n,2): 
     arr.append(i) 
    return arr 
+1

認同,先生 – grovina

+1

@PatrickHaugh:這個問題在標題中說得很奇怪,甚至在體內也是如此。 – ShadowRanger

0

您也可以使用Python的列表理解,如果你想成爲Python化:

def even_numbers(n): 
    return [i for i in range(0,n,2)] 
+0

No-op listcomps並非真正的Pythonic;如果它是沒有過濾器的身份轉換,那麼你只需要執行'list(range(0,n,2))',這個更快(除了最小輸入之外的所有輸入),更短和等價。 – ShadowRanger

相關問題