列表理解而不使用iterable

rit*_*att 2 python list-comprehension

我试图通过从另一个列表中选择随机元素来建立一个列表,没有重复.想想洗牌一副牌.我显然可以为此编写一些unpythonic代码,我不想这样做.

所以这就是我想要做的:

new = [deck[i] where 0<(i = some_rand_int)<51 if new.count(deck[i]) == 0]

有没有办法做到这一点?

Mar*_*ers 15

我试图通过从另一个列表中选择随机元素来建立一个列表,没有重复.

用途random.sample:

random.sample(population,k)

返回从总体序列中选择的独特元素的长度列表.用于无需更换的随机抽样.

试试这个:

result = random.sample(deck, n)
Run Code Online (Sandbox Code Playgroud)

要改组整个列表,请使用random.shuffle:

random.shuffle(deck)
Run Code Online (Sandbox Code Playgroud)

仍然很好奇,如果这可以使用列表理解完成!

并不是的.列表comphrension保留元素的顺序,但允许您投影或过滤它们.改组不是投影或过滤器.