我如何才能 return 哪个实例属于我列表中的随机数。不使用一百万个 if 语句?

How would I be able to return which instance belongs to the random number in my list. Without using a million if statements?

我想做的是 return实例,其范围具有列表中 random.randint() 的值....示例...

class Testing:

    def __init__(self, name, value):

        self.name = name
        self.value = value

randomtest = Testing('First', range(1, 50))
randomtest_2 = Testing('Second', range(50, 100))

selections = []
counter = 0

while counter < 2:
    counter =+ 1

    selector = random.randint(1, 100)
    selections.append(selector)

但我不想使用一百万个 if 语句来确定它属于选择列表中的哪个索引。像这样:

if selections[0] in list(randomtest.value):
    return True

elif selections[0] in list(randomtest_2.value):
    return True

非常感谢您的帮助,我对编程还很陌生,此刻我的头脑刚刚停滞不前。

您可以为您的 selections 对象使用集合,然后使用 set.intersection() 方法检查交集:

例如:

In [84]: a = {1, 2}

In [85]: a.intersection(range(4))
Out[85]: {1, 2}

在您的代码中:

if selections.intersection(randomtest.value):
    return True

您还可以为 Testing class 定义一个 hase_intersect 方法,以便检查可迭代对象是否与您的对象有交集:

class Testing:

    def __init__(self, name, value):
        self.name = name
        self.value = value

    def hase_intersect(self, iterable):
        iterable = set(iterable)
        return any(i in iterable for i in self.value)

然后像这样检查:

if randomtest.hase_intersect(selections):
    return True

根据您的评论,如果您想检查特定列表与一组对象的交集,您必须迭代 一组对象并使用上述方法检查交集。但是如果你想拒绝遍历对象列表,你应该使用一个 base claas 使用一种特殊的方法 returns 你想要的输出,但你仍然需要使用迭代来填充所有预期实例的名称。因此,如果你确实想 创建您需要为此任务至少使用 1 次迭代的不同对象。