在我正在进行的项目中,我需要做这样的事情:
import random
lol = ['1c','2c','3c']
k = lol[random.randrange(len(lol))]
lol.pop(lol[lol.index(k)])
print(lol)
但是我收到了错误
'str' object cannot be interpreted as an integer
我知道问题在哪里lol.index(k)
,但我仍然无法找到解决方案。
答案 0 :(得分:1)
list.pop()
接受索引,而不是字符串;你传递的是列表中的一个值。
如果您想以随机顺序生成项目,请使用random.shuffle()
,然后从最后弹出:
randomised = lol[:] # create a copy
random.shuffle(randomised) # put this in random order
# each time you need a new value
print(randomised.pop())
这比每次选择一个随机元素然后删除该元素要高效得多。
请注意,您可以使用random.randrange()
来选择单个随机值,而不是使用random.choice()
,而是将其用作索引。如果random.shuffle()
不符合您的特定需求,应该使用:
random_index = random.randrange(len(lol))
lol.pop(random_index)
print(lol)