首页 > 解决方案 > 在 Python 中比较列表切片的最佳方法是什么?

问题描述

我试图在 Python 中比较列表的各个部分,但无济于事?有一个更好的方法吗?

我的代码(尝试让 slice 返回 True)

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

标签: pythonlistslice

解决方案


由于切片返回列表并且列表会自动按元素进行比较,因此您需要做的就是使用==

>>> 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

推荐阅读