如何确保我不会以相反的方向比较两个大小和内容相同的列表



我想在两个大小为 4 的列表上制作两个 for 循环。

list_01 = [0,1,2,3] and list_02 = [0,1,2,3]

我已经做了这样的声明:

for ii in range(len(list_01)):
for jj in range(len(list_02)):
# if list_01[ii] != list_02[jj]:
if list_01[0] != list_02[1]:
...

我想避免像这样在相反的方向上做"相同"的事情:

# if list_01[ii] != list_02[jj]:
if list_01[1] != list_02[0]:
...

只需将每个值相互比较一次即可。

感谢您的帮助!

如果你想比较list_01[ii] != list_02[jj]这样ii <= jj,那么只要确保你从ii开始,而不是从内部循环中的0开始:

for ii in range(len(list_01)):
# start at ii, not 0, to maintain invariant that ii <= jj
for jj in range(ii, len(list_02)):
if list_01[ii] != list_02[jj]:
# do stuff

编辑:正如评论所观察到的那样,这不是很Pythonic。最好避免索引,而更直接地获取所需的项目:

for ii, item_01 in enumerate(list_01):
for item_02 in list_02[ii:]: # slice from ii to end
if item_01 != item_02:
# do stuff

如果您尝试省略相同的索引对,这应该可以做到:

from itertools import product
list_01 = [0,1,2,3]
list_02 = [0,1,2,3]
i1 = range(len(list_01))
i2 = range(len(list_02))
indices = []
for p in product(i1, i2):
if sorted(p) not in indices:
indices.append(list(p))
for i, j in indices:
#do stuff

最新更新