根据函数调用结果调用"del"会导致"SyntaxError: can't delete function call"



请考虑以下示例:

random_tile = random.choice(tiles)
del random_tile

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

那么,如果我们想缩短代码如下:

del random.choice(tiles)

我们将获得SyntaxError: can't delete function call。我尝试了eval()没有运气。如何解决?

编辑:

我要做的是从随机中删除 tiles list 的元素。我以为我发现了一种更紧凑的方法,而不是使用random.randint()作为索引,但我想不是。

是否有pythonic/常规方法可以这样做?

del不是一个函数,它是创建del语句的关键字,例如del var。您不能将其用作函数或函数,只能应用于变量名称,可变名称或订阅列表以及切片,例如。

del a
del a,b
del l[0]
del l[:]

要删除随机项目,您可以尝试此

random_tile.remove(random.choice(tiles))

但是这不是删除项目的最佳方法,因为这可能意味着内部搜索项目和项目比较,如果项目不是唯一的,也不会工作,因此最好是获取随机的随机索引并删除该

index = random.randint(0, len(l)-1)
del l[index]

如果您要实际修改 tiles列表,则第一次尝试也不会这样做。它只是分配给您的变量,然后擦拭该变量。这是因为del在变量本身上起作用,而不是指向的。大多数其他函数都可以在值某些变量点上工作。因此,除非您实际需要使用del,否则您要做的事情将正常工作。

另外,如果您要使用del,我很确定您正在使用它。如果您详细介绍您要做的事情,我们可能可以为您提供帮助。

有多种方法可以从列表中删除随机元素。这是一个。

>>> import random
>>> my_list = [1, 2, 3, 4, 5]
>>> my_list.remove(random.choice(my_list))
>>> my_list
[1, 2, 4, 5]

给定一个列表tiles这可以做到这一点:

import random
tiles.remove(random.choice(tiles))

相关内容

最新更新