一一检查列表中的每个值是否与另一个列表相同。 (蟒蛇 3)

时间:2021-08-01 02:14:27

标签: python python-3.x list for-loop boolean

例如,我们有 2 个列表:

list_1 = [12, 3, 45, 2, 50]
list_2 = [6, 3, 30, 5, 50]

如我们所见,我们在两个列表中有两个相同的值。我目前正在尝试找出一个代码,如果两个值按顺序相同,它将检查列表中的每个值,并且它将返回 False 或 True。 (检查每个列表的第一个值是否相同。在这种情况下,他们首先检查 12 和 6 是否相同,由于它们不相同,它将返回 False。他们检查下一个,如果 3 和3 是相同的,并且由于相同,它们将返回 True。)

如果有人愿意帮助我就好了。

4 个答案:

答案 0 :(得分:2)

我们可以使用 for 循环来实现这一点。 (我知道这种方法是老派的,你可以通过使用 map() 和 all() 函数使用单线实现相同的效果)

我先写完整的代码。然后我会解释每个步骤。

(我假设列表将具有相同数量的元素。)

代码:-

list_1 = [12, 3, 45, 2, 50]
list_2 = [12, 3, 45, 2, 50]

length = len(list_1)                    # STEP 1


for i in range(0, length):              # STEP 2
    if list_1[i] != list_2[i]:
        print(False)
    else:
        print(True)

第一步

确定列表的长度。这可以通过 len() 函数完成。 len(list_1) 将返回 list_1 的长度

第 2 步

遍历第一个列表中的每个元素,并将其与第二个列表中的相应元素进行比较。如果它们不同,则打印 False 或打印 True

for i in range(0, length):
    if list_1[i] != list_2[i]:
        print(False)
    else:
        print(True)

答案 1 :(得分:1)

手动检查和比较列表中每个值的手动方法。 list_1 = [12, 3, 45, 2, 50] list_2 = [6, 3, 30, 5, 50]

if(len(list_1) == len(list_1)):
    for i in range(0,len(list_1)):
        print(list_1[i] == list_2[i])
else:
    print(False) #note that If this line is executed we will get only one output  

结果如下: 错误的 真的 错误的 错误的 真实

(已编辑)

答案 2 :(得分:0)

您可以使用 all + zip() 然后您可以将它们与 == 进行比较。

来自docs

<块引用>

all(iterable): 如果可迭代对象的所有元素都为真(或可迭代对象为空),则返回 True。

<块引用>

zip(*iterables); 制作一个迭代器,聚合来自每个可迭代对象的元素。

list_1 = [12, 3, 45, 2, 50]
list_2 = [6, 3, 30, 5, 50]

def check_lists(l1,l2):
    return all(x==y for x,y in zip(l1,l2))

print (check_lists(list_1,list_2))

或者,您可以通过

直接比较它们
print(list_1==list_2)

答案 3 :(得分:0)

<块引用>

在这种情况下,他们首先检查 12 和 6 是否相同,由于它们不相同,因此将返回 False。他们检查下一个,如果 3 和 3 相同,并且由于相同,他们将返回 True。

您可以使用 itertools.zip_longest 来迭代多个序列并一次拥有它们的第 n 个项目,例如在您的列表中将是 12 和 6,然后是 3 和 3,然后是 45 和 30,依此类推。

  • 这也可以处理列表长度不同的情况。
from itertools import zip_longest

list_1 = [12, 3, 45, 2, 50]
list_2 = [6, 3, 30, 5, 50]

result = [
    value_1 == value_2
    for value_1, value_2 in zip_longest(list_1, list_2)
]
print(result)

输出:

[False, True, False, False, True]

在这里,您可以看到(从 1 开始编号)第 2 个(值为 3)和第 5 个(值为 50)项是相同的,因此只有 True 项。