![](/img/trans.png)
[英]Python can't remove a values index in a list when I am able to print the same value using its index
[英]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.