我有几个相同大小的0,1雷亚尔的列表。例如:
[0.33, 0.0, 0.0, 0.33, 0.33, 0.33, 0.0]
[0.0, 0.33, 0.0, 0.33, 0.33, 0.33, 0.0]
[0.0, 0.33, 0.0, 0.33, 0.0, 0.33, 0.0]我怀疑有些列表严格地被其他列表所控制;例如,第三个列表被第二个列表所控制;在l3i <= l2i for all I的意义上;l3j < l2j表示至少一个j。我想去掉这些;所以我编写了以下两个函数:
# R correspond to the original list of lists.
# Rp is the list where the striclty dominated lists have been removed.
def minor_solution(r, R):
"""determines if there exists r2 in R such that r <= r2 for all value and r<r2 for at least one value"""
for r2 in R:
if strict_domination(r, r2):
return True
return False
def strict_domination(r1,r2):
"""return true iff r1 is stricly dominated by r2."""
strict = False
dom = True
for i in range(len(r1)):
strict = strict or (r1[i] < r2[i])
dom = dom and (r1[i] <= r2[i])
return dom and strict
Rp = []
for ri in R:
if minor_solution(ri, R) == False:
Rp.append(ri)我的问题是这是行不通的。一些清单最终被删除,但一些应该删除的清单仍然存在。例如,我给出的示例中的第三个列表没有被删除。有什么想法吗?
发布于 2022-05-06 09:23:26
对于这样的比较,您不需要遍历所有元素,只需检查以下元素就足够了:
l1 = [0,2,5]
l2 = [0,2,5]
l1==l2
True
or
l1 = [0,2,5]
l2 = [0,2,10]
l1<l2
True而python将为您完成元素方面的工作。我的问题来了,你需要一个“适者生存”吗?“适者生存”是最主要的list,因为从你给出的描述来看,还不清楚列表元素与其他元素的关系应该是什么。也许更详尽的例子,你想要收到的将是有帮助的。
https://stackoverflow.com/questions/72138521
复制相似问题