2017-11-11 114 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

相关问题