random.choice从集? python

我正在做一个猜谜游戏的AI部分。 我希望AI从这个列表中select一个随机的字母。 我把它作为一个集合,所以我可以很容易地从列表中删除字母,因为他们在游戏中被猜出,因此不再可以被猜到。

它说“set”对象是不可转位的。 我如何解决这个问题?

import random aiTurn=True while aiTurn == True: allLetters = set(list('abcdefghijklmnopqrstuvwxyz')) aiGuess=random.choice(allLetters) print (aiGuess) 
 >>> random.sample(set('abcdefghijklmnopqrstuvwxyz'), 1) ['f'] 

文档: https : //docs.python.org/3/library/random.html#random.sample

你应该使用random.choice(tuple(myset)),因为它比random.sample更快,看起来更干净。 我写了以下内容来testing:

 import random import timeit bigset = set(random.uniform(0,10000) for x in range(10000)) def choose(): random.choice(tuple(bigset)) def sample(): random.sample(bigset,1)[0] print("random.choice:", timeit.timeit(choose, setup="global bigset", number=10000)) # 1.1082136780023575 print("random.sample:", timeit.timeit(sample, setup="global bigset", number=10000)) # 1.1889629259821959 

从数字看来,random.sample花费了7%的时间。