如何在不替换的情况下从列表中选择项目

2024-04-25 00:21:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望用python创建一个脚本,从1000张预设列表中生成5张随机卡片,而不在同一组中重复任何卡片,这将包括卡片的艺术和一个小文本框,其中显示卡片的名称和个人简历。我在网上找到了一些关于创建卡片随机化器的帮助,但我不知道如何将其更改为从一系列卡片中选择多张卡片


Tags: 脚本名称列表艺术文本框
1条回答
网友
1楼 · 发布于 2024-04-25 00:21:43

首先,在这种情况下,由于查找时间的原因,您不希望使用列表。查找将为O(n)。这意味着,如果你有一台速度很慢的超级复制机,每.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的另一个答案

相关问题 更多 >