python - 如何删除列表中的重复数字,然后替换为新的随机数

标签 python loops random numbers generator

Python 新手。我正在尝试制作一个彩票风格的东西,其中 for 循环将 5 随机数附加到列表中。

假设到目前为止的列表是 nList = [1,2,3,4] 并且最后一次迭代恰好也是 4

我希望代码删除应该在最后一个索引中的额外 4 ,并将其替换为一个全新的随机数,该随机数不会重复任何其余数字列表。我似乎无法理解它。

我尝试过使用nList.pop(),这解决了删除重复项的问题,我只是不知道如何添加新的随机数。

import random
nList = []
random.seed()
for x in range(5):
    n = random.randint(1,39)
    for item in nList:
       if n == item:
            nList.pop()
    else:
        nList.append(n)

print(nList)

我最终得到的列表较小,这不是我想要的。

最佳答案

您可以使用 set 而不是使用列表它具有没有重复项的特殊属性。这个想法是,如果您生成一个已经在集合内的数字,您只需重新滚动,直到获得一个不在集合中的数字。通过使用集合,您还可以享受 O(1) 查找时间的优势。

import random

nList = set()
for x in range(5):
    n = random.randint(1,39)
    while n in nList:
        n = random.randint(1,39)
    nList.add(n)

print(list(nList))

示例输出

[24, 25, 11, 12, 15]

关于python - 如何删除列表中的重复数字,然后替换为新的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55583705/

相关文章:

Python从特定日期中提取周数

javascript - 从对象数组中删除最后一个对象。

loops - 如何填充 map

random - linux/dev/urandom 前向预测

javascript - 如何使用 rand 和 split 函数避免特定的 3 元素组合?

python - 使用 Plotly 绘制旭日图时如何避免 None ?

Python编程,一遍又一遍地获得相同的值而不是增加

python - Cassandra Python 驱动程序 : force using a single node

java - 从Java中的输入获取字符串

mysql - SQL RAND查询选择所有记录并且不使用联接表