簡體   English   中英

如何在 for 循環操作中訪問列表中的每個元素?

[英]How do I access each element in list in for-loop operations?

我正在遍歷這個列表,不明白為什么print(d)返回seed每個數字,但分配i["seed"] = d分配了seed的最后一個元素。

如何訪問seed每個元素以進行除print()以外的操作?

res = []
seed = [1, 2, 3, 4, 5, 6, 7, 8, 9]
i = {}
for d in seed:
    print(d)
    i["seed"] = d
    res.append(i)
print(res)

謝謝!

問題是你在哪里定義 i。 認為您打算擁有一個名為 i 的字典對象,該對象具有名為“seed”的單個屬性。 並且您想將這些詞典添加到 res.txt 中。

實際上,您只有一個名為 i 的字典,並且每次通過循環都只需更新其中的值。

嘗試這個:

res = []
seed = [1, 2, 3, 4, 5, 6, 7, 8, 9]

for d in seed:
    i = {}
    print(d)
    i["seed"] = d
    res.append(i)
print(res)

這將為每個循環創建一個新的 i 實例,你應該得到你正在尋找的結果。

問題是只有一個對象i ,並且您每次都在循環中替換它的值。 通過最后一次迭代,您的(一個實例) i 的值設置為您分配給它的最后一項。 每次附加到res ,您基本上是將 a 指針附加到同一個對象(因此,當循環完成時,最終有 9 個指針指向同一個對象)。

res = []
seed = [1, 2, 3, 4, 5, 6, 7, 8, 9]
i = {}
for d in seed:
    print(d)
    i["seed"] = d  # this gets replaced every time through your loop!
    res.append(i.copy())  # need to copy `i`, or else we're updating the same instance
print(res)

要回答您的第一個問題,這是因為種子的 w 值被覆蓋,如下所示:

>>> p = {'t':'H'}
>>> p['t'] = 'k'
>>> p
{'t': 'k'}

我對你問題的第二部分感到困惑。 再詳細點?

python 中的大括號{}表示基於鍵和值工作的字典 每次遍歷循環時,都會用列表種子的當前值覆蓋 key: 'seed'。 所以當循環結束時,列表種子的最后一個值是字典 i 中種子的當前值。

暫無
暫無

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

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