如何在python中创建一个不使用';不要创建重复的数字

如何在python中创建一个不使用';不要创建重复的数字,python,random,Python,Random,我有一个简单的python代码来创建随机数 import random for x in range(100): print (random.randint(1,100)) 尽管这段代码创建了随机数,但它仍然可以创建重复数,有人能帮我想出一个办法,使它不能打印重复数吗?您可以将刚刚生成的随机数存储到一个列表中,然后在每次生成另一个数时遍历该列表。如果新生成的编号存在于列表中,则将其废弃并转到下一代 这是我最好的猜测,但我不会给你写任何代码,最好你弄明白并学习。如果您确实需要一个代码示例

我有一个简单的python代码来创建随机数

import random
for x in range(100):
    print (random.randint(1,100))

尽管这段代码创建了随机数,但它仍然可以创建重复数,有人能帮我想出一个办法,使它不能打印重复数吗?

您可以将刚刚生成的随机数存储到一个列表中,然后在每次生成另一个数时遍历该列表。如果新生成的编号存在于列表中,则将其废弃并转到下一代


这是我最好的猜测,但我不会给你写任何代码,最好你弄明白并学习。如果您确实需要一个代码示例,请告诉我,我可以为您制作一个。

首先生成数字,然后洗牌,然后从列表中选择

import random

numbers = list(range(100))  # `numbers` is now a list [0, 1, ..., 99] 
random.shuffle(numbers)  # the list is now in random order

while numbers:  # While there are numbers left, 
    a = numbers.pop()  # take one from the list,
    print(a)  # and print it.

一个
集合
将是一个更好的数据结构来保存已经看到的数字。在一个列表上迭代是O(n)复杂度,而Python中的
set
要少得多。我相信我从来没有在Python中使用过set。我只用java编写代码,所以我确信您的代码绝对正确。感谢您的更正。即使在Java中,类似集合的结构(我想是一个
HashSet
,我已经有一段时间没有使用Java了)也比列表好,我相信。:)我会试试这个听起来很棒,如果有,请让我知道它对你的效果如何!:)当我尝试运行此命令时,我收到一条错误消息:Traceback(最近一次调用last):文件“C:/Users/Desireee/Desktop/Python/random.py”,第4行,在random.shuffle(list)#列表现在以随机顺序排列文件“C:\Users\Desireee\AppData\Local\Programs\Python\Python37-32\lib\random.py”,第275行,在shuffle for i in reversed(范围(1,len(x))中)):TypeError:type类型的对象没有len()是的,我的错。在写的时候输入错误@MatteoItalia修好了,请再试一次。耶,谢谢!:)
import random


mySet = set()

totalTries = 20
for i in range(totalTries):
    mySet.add(random.randint(0, 20))
###................................

_ = [print(str(x) + ", ", end="") for x in mySet]
print("\n")
print(str(totalTries - len(mySet)) + "  duplicates were dropped!")