【问题标题】:How to select items from list without replacement [closed]如何从列表中选择项目而不替换[关闭]
【发布时间】:2020-08-01 03:38:03
【问题描述】:

我正在寻找在 python 中创建一个脚本,该脚本将从 1000 个预设列表中生成 5 张随机卡片,而没有任何卡片在同一副牌中重复,这将包括卡片的艺术和一个小文本框卡的名称和简历。我在网上找到了一些关于创建卡片随机器的帮助,但我不知道如何更改它以从系列中选择几张卡片

【问题讨论】:

标签: python


【解决方案1】:

首先,由于查找时间的原因,您不想在这种情况下使用列表。查找将 O(n)。这意味着如果您有一台 super duper 慢速计算机,每 0.1 秒可以查看一个项目,则可能需要长达 100 秒。

相反,您想在这种情况下使用字典,因为查找时间为 O(1),这意味着同一台超级超级慢速计算机将需要 0.1 秒来查找图像。这么快。还有一种情况是,dict 允许您拥有卡片、文字和图像(如 badman.jpeg 中,而不是实际照片)。

关于 dict 的问题是它们使用键/值对,而您似乎需要更像是具有两个值的键的东西。不用担心,但多思考一下是有用的。 假设您不想让卡片可修改。图片不是卡片标题,文字也不是。在这种情况下,元组会很有用。所以你会有一个键,它的值是一个元组。

从这里开始有很多方法。您可以将密钥作为卡的名称,因为它可能是唯一的。也可以使用dict constructor。你也可以只列举它们。

在这种情况下,您的 dict 可能看起来像 cards = {'1':(name, desc, name.jpg), '2':(name2, desc2, name2.jpg), '3':(name3, desc3, name3.jpg)}

其次,你想使用 random.sample() 否则你会冒两次抽同一张牌的风险,这就是你说你不想使用的牌。

至于如何将 random.sample() 与 dict 一起使用,让我向您推荐 that topic 上的另一个答案。

【讨论】:

  • 非常感谢,我需要在这里很快解决这个问题,这很有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-29
  • 1970-01-01
  • 2015-03-12
  • 2016-12-19
  • 1970-01-01
  • 2020-08-12
  • 2016-12-08
相关资源
最近更新 更多