我有以下两个列表,我试图以某种特定的方式比较它们:
a = [[18, 299, 559], [18, 323, 564], [18, 353, 564], [18, 391, 570], [18, 448, 570]]
b = [[18, 353, 564], [18, 299, 559], [18, 323, 564], [18, 391, 570], [18, 448, 570]]
我想要什么
我想按以下顺序比较a
和b
的每个元素。你知道吗
例如,在上述情况下,当a
的第一个元素[18, 299, 559]
等于b
的[18, 299, 559]
之后,循环将中断,并且在新的循环中a
的第二个元素[18, 323, 564]
将从b
的[18, 323, 564]
开始进行比较。你知道吗
这里的要点是,新循环不应该从b
的第一个元素开始迭代,同时将a
的所有元素分别与第0个索引中的所有b
进行比较。你知道吗
p.S.在这个例子中,我并不是要检查两个列表中是否存在元素,也不是要查找任何缺少的元素,这些都可以通过set
方法轻松完成。这个逻辑只是为了我自己的知识
我尝试的
所有普通的嵌套循环方法如下:
for i in a:
for j in b: #after break it would always start with first element in b
if i == j:
break
这里的问题是,每个break
新的i
都是从b
的第一个元素开始比较的,而不是从与a
匹配的最后一个元素开始比较的
我脑海中浮现的东西是这样的:
for i in a:
for j in b:
if i == j:
print something
save index of j
break
in the next loop start comparing new i from this saved index of j
然而,我不能把这个想法变成代码。你知道吗
我知道这听起来很荒谬,但就循环而言,这样的东西能用python实现吗?欢迎所有的意见和提示。你知道吗
这个怎么样:
p.S范围(len(a))-很难看:)
当然,你可以追踪到你已经走了多远。我将这个变量称为
start_j
,从那时起,它就可以在b
中开始比较:如果找到了匹配的元素,
start_j
被设置为最新的j
,下一次内部循环(用于检查b
中的元素)从那里开始。你知道吗输出:
下面是如何做到这一点没有继续或喙。。。你知道吗
相关问题 更多 >
编程相关推荐