在 Python 中比较列表切片的最佳方法是什么?

What's the best way of comparing slices of a list in Python?

我试图比较 Python 中列表的切片但无济于事?有更好的方法吗?

我的代码(尝试使切片 return 为真)

a = [1,2,3]

# Slice Assignment
a[0:1] = [0,0]

print(a)


# Slice Comparisons???
print(a[0:2])
print(a[0:2] == True)
print(a[0:2] == [True, True])

我的结果

[0, 0, 2, 3]
[0, 0]
False
False

不太清楚你到底想做什么,

在您打印时,a[0:2] 是 [0,0],您正在尝试将列表与不同类型的布尔值进行比较,因此它们是不同的

在第二个中,您将 [0,0] 与 [True, True] 进行比较,python 逐个元素地比较列表,0 的计算结果为 false,因此 [False, False] 是显然不是 == [True, True]

您能否编辑您的问题并添加您希望代码执行的操作?我会在评论中添加这个,但我还没有足够的代表:)

由于切片 returns 列表和列表会自动比较元素,您需要做的就是使用 ==:

>>> a = [1, 2, 3, 1, 2, 3]
>>> a[:3] == a[3:]
True

要与固定值进行比较,您需要付出更多的努力:

>>> b = [1, 1, 1, 3]
>>> all(e == 1 for e in b[:3])
True
>>> all(e == 1 for e in b[2:])
False

奖励:如果您正在进行大量数组计算,您可能会受益于使用 numpy 数组:

>>> import numpy as np
>>> c = np.array(b)
>>> c[:3] == 1  # this automatically gets applied to all elements
array([ True,  True,  True])
>>> (c[:3] == 1).all()
True