List.Index str而不是int - Python3

时间:2018-05-09 17:06:59

标签: python python-3.x list

在我正在进行的项目中,我需要做这样的事情:

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),但我仍然无法找到解决方案。

1 个答案:

答案 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)