我最近開始學習 Python,目前正在學習基礎知識,所以如果這個問題聽起來很傻,請接受我的借口。在學習冒泡排序演算法時,我對串列的索引行為有點困惑。例如: 代碼
my_list = [8,10,6,2,4]
對于我在范圍內(len(my_list)):
print(my_list[i])
對于我在范圍內(len(my_list)):
print(i)
結果:
8 10 6 2 4
0 1 2 3 4
前者 for 回圈給出了串列的元素(使用索引),而后者提供了它的位置,這是可以理解的。但是當我嘗試在兩個for回圈中添加 (-1) 即 print (my_list[i-1])和print(i-1)時,我希望 -1 表現得像一個簡單的負數并減去一個值來自第一個 for 回圈中的索引元素,即 8-1=7
相反,它充當元素串列的位置指示器并給出最后一個索引值4。
我期待第二個回圈的結果。有人可以向我解釋為什么print(my_list[i-1])實際上改變了串列元素的選擇,但實際上并沒有從串列元素本身中減去值 1,即[8(-1), 10(-1), 6 (-1)...
先感謝您。
uj5u.com熱心網友回復:
運算式中的串列索引my_list[i-1]是括號之間的部分,即i-1。所以通過在那里減去,你確實在修改索引。相反,如果您想修改串列中的值,即索引指向的內容,您可以使用my_list[i] - 1. 現在,減法是在檢索串列值之后進行的。
uj5u.com熱心網友回復:
在這里,當您嘗試運行第一個 for 回圈時 -
my_list = [8,10,6,2,4]
for i in range(len(my_list)):
print(my_list[i-1])
在 for 回圈中,您減去的是索引而不是該索引號處的整數。所以為了做到這一點,做減法就像 -
for i in range(len(my_list)):
print(my_list[i]-1)
并且您獲得了串列的最后一個索引,因為回圈從 0 開始,您從中減去 1 并將其設為 -1 并且 list[-1] 始終回傳串列的最后一個索引。
注意:這里像上面那樣通過 for 回圈迭代串列不是一個好習慣。你可以通過簡單的方式做到這一點 -
for i in my_list:
print(i-1)
結果將保持不變,但代碼要簡潔一些
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/396668.html
