gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 03:11:24 25 4
gpt4 key购买 nike

我想做的是返回实例,其范围具有列表中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 类定义一个 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

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

关于python - 我如何才能返回哪个实例属于我的列表中的随机数。不使用一百万个 if 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42873401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com