我試圖在 Python 中比較串列的切片,但無濟于事?有一個更好的方法嗎?
我的代碼(嘗試使切片回傳 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
uj5u.com熱心網友回復:
由于切片回傳串列并且串列會自動比較元素,因此您需要做的就是使用==:
>>> 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
uj5u.com熱心網友回復:
不太清楚你到底想做什么,
當您列印時,a[0:2] 是 [0,0],您試圖將串列與不同型別的布林值進行比較,因此它們是不同的
在第二個中,您將 [0,0] 與 [True, True] 進行比較,python 逐個元素比較串列,0 評估為 false,因此 [False, False] 顯然不是 == 到 [True, True] ]
您能否編輯您的問題并添加您希望代碼執行的操作?我會在評論中添加這個,但我還沒有足夠的代表:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/355730.html
上一篇:JupyterLab還不支持Match-Case嗎?
下一篇:Python-附加到檔案串列
