Python:防止元素一遍又一遍地附加到同一个列表中



我正在做我的第一个OOP项目,它是一个随机数生成器,可以在给定范围内生成许多随机数:

import random
import math
resList=[]
class randomInRange:
    def getRandom(self, start, end, quantity):
        for i in range(quantity):
            selList = range(start, end)
            resNum = random.choice(selList)
            resList.append(resNum)
        return (resList)
RR=randomInRange()

然后,我会在Python Shell中输入以下内容:

    (RR.getRandom(0,10,10))

它会给出这样的结果:[2, 2, 1, 4, 8, 1, 0, 7, 4, 5]但是如果我再次调用该函数,它会附加新的生成数字到同一列表。所以它想要这样的东西:[2, 2, 1, 4, 8

, 1, 0, 7, 4, 5, 4, 5, 3, 1, 8, 6, 7, 5, 4, 4]

我该如何解决这个问题?如何防止新数据一遍又一遍地附加到同一列表中,从而使列表无用?

提前感谢!

这是因为resList是一个全局变量,并且在调用randomInRange时永远不会擦除其内容。您应该只在函数中创建列表:

class randomInRange:
    def getRandom(self, start, end, quantity):
        resList = []
        for i in range(quantity):
            selList = range(start, end)
            resNum = random.choice(selList)
            resList.append(resNum)
        return (resList)

请注意,您的函数也可以替换为列表推导:

def getRandom(self, start, end, quantity):
    temp = range(start, end)
    return [random.choice(temp) for _ in range(quantity)]
import random
import math
resList=[]
class randomInRange:
    def getRandom(self, start, end, quantity):
        for i in range(quantity):
            selList = range(start, end)
            resNum = random.choice(selList)
        if resNum not in resList:
                resList.append(resNum) 
        return (resList)
RR=randomInRange()
print RR.getRandom(0,10,10)

或者更简单的是以下内容

import random
def getRandom(start, end, quantity):
    return [random.choice(range(start, end)) for _ in range(quantity)]
print getRandom(0, 10, 10)

最新更新