2016-12-24 59 views
-4

我认为这是一个非常简单的问题,但我得到了错误的答案。我在做一个在线课程中的python编程练习,并试图将此代码转换为循环。将列表理解转换为while循环

x = [y for i in range(300)] 

我的回答:

counter=0 
while counter<300: 
    x=y 
    counter+=1 

的是这两者之间的区别?
如何将第一个片段转换为第二个片段?

+0

X需要进行列表,并在“翻译”,它不是一个列表(而且,如果你正在处理列表,'='不你想要什么,但是'append'),并且你简单地用y覆盖x,但是你从来没有向任何东西声明y,所以这在语法上也是不正确的,这是你正在处理的确切代码吗?理解也是不正确的, – idjaw

+0

'x = list(range(300))'更好,但这已经错了:'x = [y对于范围内的我(300)]' –

+0

y被定义。练习在自己的模拟器中有价值我认为它只是给了我第一行,并希望我将它转换成循环 – Prethia

回答

2

列表理解的输出是一个list,并且您尚未创建代码中的任何名单,因此,当我们阅读列表理解出外x = [y for i in range(300)]意味着x是存储的价值300元的列表变量为y。这可以写成while环路:

x = [] 
counter = 0 

y = 10 # Some value defined in your code. 
while counter < 300: 
    x.append(y) 
    counter += 1 
+0

我用一个示例数据集对您的代码进行了尝试,结果相同,但系统不接受答案。你认为这是因为计算价值时两者之间的差异?或者是第一个代码产生了一些不必要的东西? – Prethia