在 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
我试图比较 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