亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何更改不同索引中的每個嵌套列表?

如何更改不同索引中的每個嵌套列表?

牛魔王的故事 2022-07-19 20:07:28
假設我有清單:    lst = [[1,1,1], [1,1,1], [1,1,1], [1,2,3], [1,2,3], [1,2,3]] # 3n sublists我希望它是:    [[2,1,1], [1,2,1], [1,1,2], [2,2,3], [1,3,3], [1,2,4]]這個想法是向每個子列表添加 1,如下所示:每次我按 0,1,2 的順序更改另一個子列表時:lst[i][0 or 1 or 2] += 1 根據子列表的順序。例如:第一個子列表將是 lst[0] [0] += 1第 4 個子列表將是:lst[3] [0] += 1大列表有3n長度的子列表3我試過了    lst = [[1,1,1], [1,1,1], [1,1,1]]                 for i in range(len(lst)):             for j in (0,1,2):             lst[i][j] += 1它返回    [[2, 2, 2], [2, 2, 2], [2, 2, 2]]而不是    [[2,1,1], [1,2,1], [1,1,2]]因為我遍歷了每個子列表,遍歷了其中的每個元素。更改了我想要的對象后,如何繼續到第二個子列表?
查看完整描述

4 回答

?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

您可以使用列表推導:


lst = [[1,1,1], [1,1,1], [1,1,1], [1,2,3], [1,2,3], [1,2,3]]

new_lst = [[k+1 if j == i%3 else k for j, k in enumerate(a)] for i, a in enumerate(lst)]

輸出:


[[2, 1, 1], [1, 2, 1], [1, 1, 2], [2, 2, 3], [1, 3, 3], [1, 2, 4]]


查看完整回答
反對 回復 2022-07-19
?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

你想要的是使用zip:


lst = [[1,1,2], [1,2,1], [1,1,1]]            

for i,j in zip(range(len(lst)), (0,1,2)):

     lst[i][j] += 1

lst

#[[2, 1, 2], [1, 3, 1], [1, 1, 2]]


查看完整回答
反對 回復 2022-07-19
?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

你可以用一個簡單的for循環來做到這一點,無需使用zip或enumerate


for i in range(len(lst)):

    lst[i][i] += 1


print(lst) # [[2, 1, 2], [1, 3, 1], [1, 1, 2]]


查看完整回答
反對 回復 2022-07-19
?
慕尼黑5688855

TA貢獻1848條經驗 獲得超2個贊

這是一種使用enumerate.


前任:


lst = [[1,1,2], [1,2,1], [1,1,1]]


for idx, v in enumerate(lst):

    v[idx] += 1

print(lst)

輸出:


[[2, 1, 2], [1, 3, 1], [1, 1, 2]]


查看完整回答
反對 回復 2022-07-19
  • 4 回答
  • 0 關注
  • 112 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號