我想使用 for 回圈將陣列從最后一個元素切片到第一個元素以減少陣列,這是我的代碼,但由于某種原因最后一個元素沒有顯示。忽略函式的名稱。
def find_even_index(arr):
for i in range(len(arr)):
print(arr[-(len(arr)):-i])
find_even_index([1,2,3,4,3,2,1]),3)
結果:
[]
[1, 2, 3, 4, 3, 2]
[1, 2, 3, 4, 3]
[1, 2, 3, 4]
[1, 2, 3]
[1, 2]
[1]
預期結果:
[1, 2, 3, 4, 3, 2, 1]
[1, 2, 3, 4, 3, 2]
[1, 2, 3, 4, 3]
[1, 2, 3, 4]
[1, 2, 3]
[1, 2]
[1]
uj5u.com熱心網友回復:
在職的:
def find_even_index(arr):
for i in range(len(arr)):
print(arr[:len(arr) - i])
find_even_index([1,2,3,4,3,2,1])
#prints:
[1, 2, 3, 4, 3, 2, 1]
[1, 2, 3, 4, 3, 2]
[1, 2, 3, 4, 3]
[1, 2, 3, 4]
[1, 2, 3]
[1, 2]
[1]
當你有
arr[:-i]
我從 1 開始,所以你告訴它,本質上,做
arr[0:-0]
# which is
arr[0:0]
這就是導致它什么也不列印的原因。相反,從陣列的長度開始并逐漸減 1。
uj5u.com熱心網友回復:
您可以使用負索引指定的最右邊是-1
,它指的是序列中的最后一項。但是,切片語意是將 后面的索引:
從切片中排除。
因此,無法使用 右側的負索引將:
最后一項包含在串列中。
您可以通過替換-i
為-i if i else len(arr)
:
def find_even_index(arr):
for i in range(len(arr)):
print(arr[-(len(arr)):-i if i else len(arr)])
find_even_index([1,2,3,4,3,2,1])
輸出:
[1, 2, 3, 4, 3, 2, 1]
[1, 2, 3, 4, 3, 2]
[1, 2, 3, 4, 3]
[1, 2, 3, 4]
[1, 2, 3]
[1, 2]
[1]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/505278.html
上一篇:迭代python串列并更改其中的字符時出現奇怪的輸出
下一篇:熊貓從for回圈創建csv檔案