【问题标题】:Syntax error in nested for loop in Python [closed]Python中嵌套for循环中的语法错误[关闭]
【发布时间】:2012-12-22 05:51:52
【问题描述】:

下面是一个用 Python2.7 编写的 for 循环,它在 Python3.3 中执行时抛出了一个语法错误。我是这门语言的新手,想了解一下这是什么样的外观?谢谢。 :)

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

我在执行时将 xrange() 更改为 range()。 'links' 是一个 url 列表。

【问题讨论】:

  • 在 for 循环中 实际上有什么东西吗?
  • 这不是一个嵌套循环,它是一个带有a generator expression 的循环。这些是不同的东西。另请注意,这是循环某些内容的可怕方式。此外,当您遇到错误时,请发布实际错误,然后更容易看到问题所在。
  • “它抛出了一个语法错误”。哪一个?看起来怎么样?

标签: python python-3.x python-2.7


【解决方案1】:

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

xrange 与 Python 2.X 中的 range 不同,它返回一个迭代器,而 range 返回一个列表。 在 Python 3.X 中,xrange 已被删除,取而代之的是 range 现在返回一个迭代器

【讨论】:

  • 嗨,Abijit,是的,我已将 xrange 替换为 range,但仍然存在语法错误。除此之外,上面的 for 循环在语法上是否正确?
  • @user1957908:除了以这种方式编写循环毫无用处之外,此循环中没有其他语法问题。参考根的答案。参考Ideone Share
【解决方案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
[]

【讨论】:

  • 略有不同,因为links 将在此结束时为空 - 然而,这仍然是一个糟糕的主意。
  • @Lattyware -- 是的,如果 op 真的想使用该列表,则添加了一个示例。
猜你喜欢
  • 1970-01-01
  • 2019-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 2012-12-09
相关资源
最近更新 更多