簡體   English   中英

在 python 中循環遍歷列表的一部分時,我無法正確索引

[英]when looping through a slice of a list in python, I am not able to index correctly

在 python 中循環遍歷列表的一部分時,我無法正確索引:

我首先創建了一個包含從 1 到 10 的整數的列表,我的目標是通過循環列表中的前 5 個元素將前 5 個元素乘以 10。 然而,最終相乘的是第 2 到第 6 個元素。

預期結果: [10,20,30,40,50 6,7,8,9,10]

實際結果: [1,20,30,40,50 60,7,8,9,10]

我嘗試以不同的方式進行索引,例如[:5] [0:5] 我不知道我現在還能做什么。

這是我的代碼:

lst = [1,2,3,4,5,6,7,8,9,10]
for j in lst[0:3]:
    lst[j] = lst[j] * 10
print(lst)

您的列表切片:

lst[0:3]

展開到列表的前三個元素 (1, 2, 3)。

即使你這樣做了:

lst[0:5]

相反,要獲取前 5 個元素(1、2、3、4、5),在這種情況下仍然不起作用。

原因是因為j會在循環的每次迭代中采用這些值。 但是,列表索引從 0 開始。您可以偏移索引( j - 1 ),但這仍然不能解決您的問題。

您不想遍歷列表的值——它們可以是任意數字。 你不能依賴它們來迭代。 而是使用range function。 它將生成一個用於迭代的數字序列。

在您的情況下, range(5)可以解決問題。 它將生成 0, 1, 2, 3, 4 - 這將允許您正確索引列表。

這是一個工作示例:

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for j in range(5):
    lst[j] = lst[j] * 10
print(lst)

這給出了所需的 output:

[10, 20, 30, 40, 50, 6, 7, 8, 9, 10]

較早的帖子提供了很好的解決方案。 或者,這是模仿原始方法的一種方法:[first elem. 是-10,第二:-9....最后一項是-1。 從后數]

N = len(lst)   # 10

for i in range(-N, -5, 1):
    lst[i] *=  10
    
print(lst)

您可以設置生成器的值,它將前N個元素乘以一行中的前N個元素:

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
N = 6
lst[0:N] = (i * 10 for i in lst[0:N])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM