我想使用串列的切片以相反的順序瀏覽串列,但我無法在輸出中顯示串列的第一個(索引 0)項。
l=[0,1,2,3,4,5,6]
s=len(l)
for i in range(s):
print(l[s:i:-1])
輸出缺少串列的第一項:
[6, 5, 4, 3, 2, 1]
[6, 5, 4, 3, 2]
[6, 5, 4, 3]
[6, 5, 4]
[6, 5]
[6]
[]
它看起來只是一個轉移問題,i-1但當i=0.
到目前為止我能想到的唯一解決方案是丑陋的:
l=[0,1,2,3,4,5,6]
s=len(l)
for i in range(s):
if i == 0:
print(l[s::-1])
else:
print(l[s:i-1:-1])
輸出(我真正想要的):
[6, 5, 4, 3, 2, 1, 0]
[6, 5, 4, 3, 2, 1]
[6, 5, 4, 3, 2]
[6, 5, 4, 3]
[6, 5, 4]
[6, 5]
[6]
對我來說,它看起來像是 python 中的設計失敗,因為在反向切片中沒有其他方法可以讓串列的第一項然后將該欄位留空,當你有一個變數時有什么問題......告訴我如何做得更好。
uj5u.com熱心網友回復:
您可以將其反向切片,然后遍歷反向切片
l=[0,1,2,3,4,5,6]
s=len(l)
for i in range(s):
print(l[::-1][0:s-i])
print(l)
并且原始串列不會更新
uj5u.com熱心網友回復:
您可以通過按照已經建議的方式反轉串列來避免任何檢查或切片。
定義您的串列后,您可以執行以下操作:l.reverse() 或 l = l[::-1](這是同一件事)
對于未來,只需知道,在對串列進行切片時,會包含第一個索引,但不包含最后一個索引。所以如果你mylist = [0, 1, 2, 3, 4]做了mylist[1:3]會回來[1, 2]
uj5u.com熱心網友回復:
你可以使用None.
for i in range(s):
print(l[: i-1 if i else None : -1])
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/382226.html
