【问题标题】:Syntax Error for List Comprehension in Python, could not quite figure out what is wrongPython 中列表理解的语法错误,无法弄清楚什么是错误的
【发布时间】:2020-03-13 02:49:48
【问题描述】:

这是我正在处理的问题的一段简化代码。我无法弄清楚此处列表理解的语法有什么问题。有人可以帮忙吗?

for i in range(10):
    a = [j if j == i for j in range(100)]



File "<ipython-input-19-4bf2e143eb37>", line 2
    a = [j if j == i for j in range(100)]
                       ^
SyntaxError: invalid syntax

编辑:显然我在上面的例子中改变了我的语法,因为'if'语句应该在'for'语句之后。 然而,我在这里也意识到一个奇怪的事情,如果“if”语句还包含一个“else”语句,那么它可以在“for”语句之前,如下例所示。不知道这背后是否有任何逻辑。

l = [22, 13, 45, 50, 98, 69, 43, 44, 1]
[x+1 if x >= 45 else x+5 for x in l]

对此有什么想法吗?

【问题讨论】:

  • 你已经翻转了列表理解的格式。
  • 共有三种不同的ifs: 1. 一个控制结构,后跟一个表达式和: 2. 三元运算符:&lt;value1&gt; if &lt;expression&gt; else &lt;value2&gt; 3. 在条件部分的理解。不,不要混淆这三个!

标签: python syntax list-comprehension


【解决方案1】:

不确定您的确切目标,但请尝试:

for i in range(10):
    a = [j for j in range(100) if j == i ]

【讨论】:

  • 顺便说一下,我在编辑中有一些进一步的讨论,有什么想法吗?
  • 我会小心确保您得到正确的结果,因为我不认为它们是等效的逻辑语句,尽管它们看起来很相似
  • 是的,我只是好奇是否将“if”放在之前或之后会有所不同,并且现在想不出任何例子来突出这种差异。就像您说的那样,它们毕竟可能不相等。干杯!
【解决方案2】:

应该是这样的:

 for i in range(10):
   a = [j for j in range(100) if j == i]
   print(a)

【讨论】:

  • 谢谢朋友!很想听听你对我的编辑的看法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 2016-05-04
  • 1970-01-01
  • 2012-02-17
  • 1970-01-01
  • 1970-01-01
  • 2015-10-26
相关资源
最近更新 更多