使用python,检查列表具有相同的元素

2024-05-16 21:53:34 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我用来比较两个列表并打印输出的代码,因为lis1中的1与list2中的位置2匹配,依此类推。您能告诉我如何使用嵌套for循环和break and continue语句吗 。还有任何可行的解决方案

def Iter(l1,l2):
    for i in range(len(l1)):
        for j in range(len(l2)):
            if l1[i]==l2[j]:
                print("matched at %d position"%l2[j])
            break

                    
l1=[1,2,3,4,5]
l2=[3,4,1,2,5]
Iter(l1,l2)

Tags: and代码inl1列表forlenrange
3条回答

如果两个数组的长度相等,则只需使用一个循环

def Iter(l1,l2):
    for i in range(len(l1)):
      if l1[i]==l2[i]:
        print("matched at %d position"%l2[i])
     
l1=[1,2,3,4,5]
l2=[1,2,1,2,5]
Iter(l1,l2)

输出:

matched at 1 position
matched at 2 position
matched at 5 position

你的方法没有时间效率,是二次时间。如果你考虑到线性空间,你可以在线性时间内完成。创建list2中元素到其索引的映射

# assuming unique elements, you can modify to use a lists of indices as values to handle 

l1 = [1,2,3,4,5]
l2 = [3,4,1,2,5]

index_map = {val:i for i, val in enumerate(l2)}
for val in l1:
    if val in l2:
        print(f"Matched {val} at position {index_map[val]}")

如果我正确理解了你的问题,你只需要找到第一个列表中每个项目的位置,在第二个列表中。 您可以只使用一个循环在第一个列表中进行迭代。对于每个元素,您可以检查该元素是否存在于第二个循环中,如果存在,请报告索引:

def Iter(l1,l2):
for i,x in enumerate(l1):
    try:
      print(f"position {i} in first list matched at position {l2.index(x)} in second list")
    except ValueError:
      continue

“try”和“except”部分只是为了处理当您试图对l1中存在但不是l2的元素使用l2.index()时会出现的错误

相关问题 更多 >