【发布时间】:2022-12-03 01:16:42
【问题描述】:
enhancerlist=[[5,8],[10,11]]
TFlist=[[6,7],[24,56]]
我有两个列表列表。我试图隔离我的“TFlist”中不适合任何增强列表子列表范围的子列表(按范围:TFlist 子列表范围适合增强列表子列表范围内)。 因此,例如,TFlist[1] 不会出现在 enhancerlist 中任何子列表的范围内(而 TFlist [6,7] 适合 [5,8] 的范围内),所以我希望将其作为输出:
TF_notinrange=[24,56]
像这样的嵌套 for 循环的问题:
while TFlist:
TF=TFlist.pop()
for j in enhancerlist:
if ((TF[0]>= j[0]) and (TF[1]<= j[1])):
continue
else:
TF_notinrange.append(TF)
是我得到这个作为输出: [[24, 56], [3, 4]]
if 语句一次检查 enhancerlist 中的一个子列表,因此即使稍后有一个子列表在其范围内,也会附加 TF。
我能以某种方式对条件进行 while 循环吗?虽然看起来我仍然有嵌套循环错误地附加东西的问题?
【问题讨论】:
-
一个普通的嵌套
for循环在这里更合适。对于TFlist中的每个范围,遍历enhancerlist中的每个范围并进行检查。如果TFlist对一直通过内部循环,那么您已经找到了一个有效的对,因此将它添加到另一个跟踪有效对的列表。 -
您的代码的问题在于,您假设如果来自
TFlist的给定对与enhancerlist中的给定对j不重叠,您将继续添加不正确的TFlist项目假设。您必须将每个TFlist与每个enhancerlist进行比较,然后才能得出给定的TFlist项目不重叠的结论。 -
答案已发布后,您无法编辑问题以更改上下文。
-
@ddejohn 伙计。我已经说过这是我问题中的问题。如果您不喜欢这个问题 -1 ????
-
@ddejohn 那是我的原始代码!我发帖的时候出错了。离开这里。你是个巨魔
标签: python