在另一个列表中列出,但第一个列表的元素不需要在第二个列表中依次出现
List in another list, but the elements of the first list don‘t need to occure one after another in the second list
我有 2 个不同的列表要比较。
关于第一个列表元素的排序,我想知道第一个列表的所有元素是否都出现在第二个列表中,但是元素不需要在第二个列表中直接一个接一个地出现。
例如:
list1 = [3, 11, 17]
list2= [54, 3, 23, 17, 11, 50, 17]
对于这两个列表,函数应该 return True
因为 list1
的每个元素都以 list1
的顺序出现在
list2 = [54, 3, 23, 17, 11, 50, 17]
中。
每个列表的元素顺序不应更改,列表可以具有相同值的元素。
我们可以通过使用列表中的错误处理和 index
方法来做到这一点。让我们定义以下函数:
def compare_lists(list1, list2):
start = 0
for y in list1:
try:
start = list2.index(y, start) + 1
except ValueError:
return False
else:
return True
对于 list1
的每个元素,我们会查看 list2
在找到最后一个元素后的第一次出现。如果找到,我们将它的索引保存在一个变量start
中,并从start + 1
索引开始继续寻找list2
中的下一个元素。
如果未找到该元素,index
方法将抛出一个 ValueError
,我们将其捕获并用于 return False
。如果没有抛出错误,那么列表通过了测试,我们 return True
.
如果您还有任何问题,请告诉我们。
我有 2 个不同的列表要比较。
关于第一个列表元素的排序,我想知道第一个列表的所有元素是否都出现在第二个列表中,但是元素不需要在第二个列表中直接一个接一个地出现。
例如:
list1 = [3, 11, 17]
list2= [54, 3, 23, 17, 11, 50, 17]
对于这两个列表,函数应该 return True
因为 list1
的每个元素都以 list1
的顺序出现在
list2 = [54, 3, 23, 17, 11, 50, 17]中。 每个列表的元素顺序不应更改,列表可以具有相同值的元素。
我们可以通过使用列表中的错误处理和 index
方法来做到这一点。让我们定义以下函数:
def compare_lists(list1, list2):
start = 0
for y in list1:
try:
start = list2.index(y, start) + 1
except ValueError:
return False
else:
return True
对于 list1
的每个元素,我们会查看 list2
在找到最后一个元素后的第一次出现。如果找到,我们将它的索引保存在一个变量start
中,并从start + 1
索引开始继续寻找list2
中的下一个元素。
如果未找到该元素,index
方法将抛出一个 ValueError
,我们将其捕获并用于 return False
。如果没有抛出错误,那么列表通过了测试,我们 return True
.
如果您还有任何问题,请告诉我们。