[英]Processing multidimensional lists with nested for loops in python?
我正在為Nuke-The Foundry編寫代碼。.我已經敲了三個小時了..在Google上查找但沒有成功,我要嘗試的工作基本上是創建二維列表並在其中填充一些內容。我的情況下,我想用db = [['nodeName1', 'inputnName1'], ['nodeName2', 'imputName2'], etc...]
填充列表db = [['nodeName1', 'inputnName1'], ['nodeName2', 'imputName2'], etc...]
我用db = [[None for x in range(2)] for y in range (nMasks)]
創建列表-其中nMasks是“ db”中應有多少行的變量
現在我想以某種方式用我的變量填充列表。
for i in range(len(db)): #row
for j in range(len(db[i])): #element
for n in nuke.selectedNodes():
if j == 0:
db[i][j] = n #populate list with node
if j != 0:
db[i][j] = 'a' #for now it's just an a and nothing more but ill have to change this to an actual nodeName
這給了我想要的結果不同-當我這樣做時:
print db[0][0]['name'].value()
print db[0][1]
print db[1][0]['name'].value()
print db[1][1]
我得到結果:
節點1 a節點1 a
我希望它看起來像:
節點1 a節點2 a
注意:也許對此有更優雅的解決方案?
我通常通過將值附加到列表中來填充列表。 這樣,您無需事先知道列表的大小。 您似乎想要從所需的輸出中執行的操作是將selectedNodes
放入2D數組db
。 似乎db[i][0]
應該是nuke.selectedNodes()[i]
而db[i][1]
應該是字符串。 我不太了解您的nMasks
與所選節點的數量有什么關系,但是,如果您打算獲取所有所選節點,那么以下似乎更自然的獲取您想要的2D列表
sn = nuke.selectedNodes()
db =
for n in nuke.selectedNodes():
db.append([n,'a'])
獲得相同列表的方法有很多。 例如,您可以使用列表推導將其匯總為一行
db = [[n,'a'] for n in nuke.selectedNodes()]
但是,如果您想在問題的代碼中使用嵌套循環,可以這樣做
db = [[None for x in range(2)] for y in range (nMasks)]
for i in range(len(db)):
for j in range(len(db[0])):
if j == 0:
db[i][j] = nuke.selectedNodes()[i] #populate list with node
else:
db[i][j] = 'a'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.