在python中同时在不同索引处切片列表

2024-10-04 11:36:20 发布

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

如何使用slice检查两个列表在特定索引处的值是否相同?你知道吗

L1 = ['X00013', 9654123, 4.1, 'No', 'No', 1.83, 3.8, 0.01, 90.01]
L2 = ['X00014', 2021230, 1.23, 'Yes', 'No', 1.86, 3.65, 0.15, 0.00001]

我知道怎么检查

if L1[3] == L2[3]:
    print("YES")

但我不知道如何同时检查多个位置/索引:

我在寻找类似于同时检查索引3、4和7的两个列表的东西。你知道吗

我可以使用运算符和itemgetter

itemgetter(3,4,7)(L1) ==  itemgetter(3,4,7)(L2)

但我想简单的直接解决方案切片的名单。谢谢你的帮助。你知道吗


Tags: nol1列表if切片slice运算符解决方案
2条回答

您可以遍历所需索引的列表。你知道吗

places = (3, 4, 7)

if [L1[i] for i in places] ==     \
   [L2[i] for i in places]:
    print "YES"
else:
    print "NO"

当然,这简化为一个简单的if all,但是上面的内容可能会帮助您理解逻辑。你知道吗

print all(L1[i] == L2[i] for i in places)

您可以通过一个基本循环和一些条件来实现这一点:

def check_places(L1, L2, places):
    for i in places:
        if i >= len(L1) or i >= len(L2) or L1[i] != L2[i]:
            return False

    return True

其工作原理如下:

>>> L1 = ['X00013', 9654123, 4.1, 'No', 'No', 1.83, 3.8, 0.01, 90.01]
>>> L2 = ['X00014', 2021230, 1.23, 'Yes', 'No', 1.86, 3.65, 0.15, 0.00001]
>>> places = (3, 4, 7)
>>> check_places(L1, L2, places)
False

相关问题 更多 >