python - 从列表中随机选择项目而不重复

标签 python random

我遇到了这个问题:程序每 5 秒左右随机一张一张地显示 53 张卡片,而不重复它们。

我的代码现在看起来非常基本,因为我仍在尝试弄清楚如何使其工作。我已经设法随机打印列表中的项目而不重复,但是当它用完选项时,我会收到错误。这是我的代码的一部分:

let = ['CARD 1','CARD2','CARD 3']#Theres only 3 cards until i figure how to do it
if var=='iniciar' or 'INICIAR':
  while True:
    random.choice(let)
    while len(let):
    print let.pop()
    import time
    time.sleep(.5)

你们中的任何人都可以弄清楚如何做到这一点或者有一个我可以使用的例子吗?

最佳答案

您可以使用random.shuffle来让它工作:

import random
import time

let = ['CARD 1','CARD2','CARD 3']

new_let = list(let)
<b>random.shuffle(new_let)</b>
for card in new_let:
    print(card)
    time.sleep(.5)

或者我们可以采样:

import random
import time

let = ['CARD 1','CARD2','CARD 3']

<b>new_let = random.sample(let, k=53)</b>
for card in new_let:
    print(card)
    time.sleep(.5)

这里k=53是我们采样的元素数量,因此我们可以更改参数。

最好使用 for 循环,并迭代列表,而不是弹出和销毁(通常最好不要更改数据结构,除非需要)。

请注意:

if var=='iniciar' or 'INICIAR':

应该是:

if var == 'iniciar' or var == 'INICIAR':

否则条件始终为真:or 检查两个操作数的真实性,非空字符串的真实性为 True

关于python - 从列表中随机选择项目而不重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52581788/

相关文章:

java - 如何从 map 中为每个数据中心打印随机主机?

c++ - std::piecewise_constant_distribution 和 std::vector 的问题

python - 在数据框中选择每个月的特定日期数据

python - 用于路径传播的链式运算符重载

python - 二分查找元素的最低索引

python - 在 Excel 列中将文本与 URL 分开

C++ RNG(随机数生成)优化

random - 如何在 CUDA FORTRAN 中生成随机数?

python - 如何将恢复图的输出张量连接到 tensorflow 中默认图的输入?

java - 种子在随机数生成中的作用