请考虑以下示例:
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))