2017-11-25 93 views
2

我想弄清楚如何解決這個問題。我知道答案,但我不明白爲什麼它是正確的。在Python中使用循環訪問列表中的索引

primes = [2, 3, 5, 7, 11] 

執行以下循環後它包含什麼?

for i in range(2): 
    primes[4 - i] = primes[i] 

回答:2,3,5,3,2

我被困在primes[4 - i]...一部分。有人可以解釋這部分嗎?我知道這是指數的位置。

回答

1

該代碼從反轉數組開始,但它覆蓋了數組的末尾,因此總體上它只輸出一個迴文。

-1

陣列是建立具有索引:

0,1,2,...,n 

可以通過選擇其位置例如輸入的每個指標array[2]獲取數組的第三個值。

你的代碼,就像@ script8man解釋的那樣,選擇4-th索引。在range(2)(0,1)中,它將返回第4個和第3個索引,該索引被第i個索引(0,1)覆蓋。

2

range(n)給你的數字從0到n序列 - 1

如果通過其序列中的代碼替換range功能,你基本上得到這樣的:

for i in [0, 1]: 
    primes[4 - i] = primes[i] 

每次循環,i將從0開始並且變得越來越大。 這又意味着4 - i將從4開始變小。

第一循環:4 -i = 4 - 0 = 4

第二循環:4 - I = 4 - 1 = 3

(等如果在範圍內的值比大2)

primes[4 - i] = primes[i]意味着你分配給指數4 - i存儲索引i處的值。

在您的例子,你的循環實際上這樣做:

第一循環:質數[4] =素數[0]

第二循環:質數[3] =素數[1]

給你你現在有的結果。

0

該代碼只是將第一個倒數第二個倒數第二個倒數第二個,依此類推。 直到循環結束