在函数调用结果上调用"del"会导致"SyntaxError:无法删除函数调用"

Mil*_*dek 1 python syntax-error function-calls

考虑下面的例子:

random_tile = random.choice(tiles)
del random_tile
Run Code Online (Sandbox Code Playgroud)

它首先将列表中的随机元素分配给tiles变量,然后在该变量上调用函数.

然后,如果我们想缩短代码如下:

del random.choice(tiles)
Run Code Online (Sandbox Code Playgroud)

我们会得到一个SyntaxError: can't delete function call.我试着eval()没有运气.怎么解决这个问题?

编辑:

我想要做的是随机删除tiles列表中的元素.我认为除了使用索引之外,我发现了一种更紧凑的方式,但我猜不是.random.randint()

有没有pythonic /传统方式这样做呢?

Anu*_*yal 5

del不是函数,它是创建del语句的关键字,例如del var.您不能将它用作函数或函数,它只能应用于变量名,变量名列表或订阅和切片,例如

del a
del a,b
del l[0]
del l[:]
Run Code Online (Sandbox Code Playgroud)

要删除随机项,您可以尝试这样做

random_tile.remove(random.choice(tiles))
Run Code Online (Sandbox Code Playgroud)

它不是删除项目的最佳方式,因为它可能意味着内部搜索项目和项目比较,如果项目不是唯一的也将无法工作,所以最好是获取随机索引并删除

index = random.randint(0, len(l)-1)
del l[index]
Run Code Online (Sandbox Code Playgroud)

  • 此外,它的语义意味着*除了变量,属性访问或集合查找(`a [b]`)之外的任何东西都没有意义*. (2认同)