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 /传统方式这样做呢?
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)