我如何才能 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 次迭代的不同对象。
我想做的是 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 次迭代的不同对象。