2013-01-08 71 views
-8

下面是写在Python2.7一个for循环,并同时Python3.3执行它抛出一个语法错误。我对这种语言很陌生,希望得到任何帮助,以了解这是什么样的外观?谢谢。 :)语法错误嵌套for循环Python中

for link in (links.pop(0) for _ in xrange(len(links))): 

我在执行时已将xrange()更改为range()。 '链接'是一个网址列表。

+1

有什么实际** **中的for循环? – Volatility

+2

这不是一个嵌套循环,它与[发电机表达式]环(http://www.youtube.com/watch?v=pShL9DCSIUw)。这些是不同的事情。另外请注意,这是循环一些东西的可怕方法。另外,当你遇到错误时,发布实际的错误,那么看看问题是多么容易。 –

+0

“它正在抛出语法错误”。哪一个?它看起来如何? – glglgl

回答

3

在Python 3.3,xrange不支持。您需要将语句更改为使用范围。

xrange不像范围在Python 2.X返回迭代,其中作为range返回一个列表。 在Python 3.X中,xrange已被删除,而现在范围返回一个迭代器

+0

嗨Abijit,是的,我已经用范围代替了xrange,但仍然存在语法错误。除此之外,以上for循环句法正确吗? – user1957908

+0

@ user1957908:在这个循环中没有其他语法问题,除了这种方式无用的写循环外。请参阅根的答案。请参阅[Ideone分享](http://ideone.com/zrvTiT) – Abhijit

2

这与for link in links:非常相似,那么为什么要这么做呢?除此之外,如果你说你替换了xrange,它在python3语法上是正确的。

如果你想消费links你可以这样做:

links=[1,2,3,4,5] 
links.reverse() #If the order matters 
while links: 
    print(links.pop()) 
    print(links) 

出来:

1 
[5, 4, 3, 2] 
2 
[5, 4, 3] 
3 
[5, 4] 
4 
[5] 
5 
[] 
+0

是略微不同,如'links'将在本月底空 - 但它仍然是一个可怕的想法。 –

+0

@Lattyware - 是的,如果op真的想要使用这个列表,请添加一个例子。 – root