2

我想要将多个变量设置为列表中的随机元素。现在我这样做有点像这样:

from random import choice

list = ["a", "b"]
foo = choice(list)
bar = choice(list)
baz = choice(list) #etc.

我确信有更好的方法来做到这一点。我试过了

 foo = bar = baz = choice(list)

但是,当然它只是将它们全部设置为随机选择一次的列表的单个元素,并且我希望将每个变量设置为新的 random.choice。

4

4 回答 4

7

random.sample()如果您想从列表中提取三个不同的元素(即foo永远不等于bar,这可能不是您想要的),您可以使用:

foo, bar, baz = random.sample(l, 3)

我将您的变量重命名为,l因为list它是一个内置类型。意外覆盖它不会很漂亮。

于 2012-09-14T08:19:38.150 回答
5

也许创建一个带有选择输出的列表?就像是

choices = [choice(list) for i in range(10)]

你有10个元素?另外我会重命名list为别的东西。

于 2012-09-14T08:20:55.957 回答
1

Like @Alex suggested but without getting list as result:

foo, bar, baz = [random.choice(list) for i in range(3)]
于 2012-09-14T08:34:28.200 回答
1

我会考虑将它们放在dict使用somedict['foo']样式访问中:

from random import choice

CHOICES = ('a', 'b')
choices = {name: choice(CHOICES) for name in ['foo', 'bar', 'baz']}
于 2012-09-14T08:38:20.650 回答