2015-10-18 38 views
0

如果我給出了一個列表,其中包含一些列表,並且我希望每次出現值或字符串的位置,那麼給定以下代碼我該怎麼做?在列表列表中打印Value的位置Python

testlist = [[1, 2, 3],[ 5, 3, 1],[ 2, 1, 6]] 

對於i在[I爲I,X在如果枚舉(testlist)x == 1]: 打印我

我認爲這將打印出

[0][0] 
[2][1] 

我不只是想要說:

打印testlist [0] [0]

會如何實現這一目標?

+0

怎麼樣'[1] [ 2]'? – inspectorG4dget

+0

我知道我可以簡單地說print testlist [1] [2]。我講的是:如果測試列表的結構可以改變。然後打印測試列表[1] [2]將無效 –

回答

1
In [121]: testlist = [[1, 2, 3],[ 5, 3, 1],[ 2, 1, 6]] 

In [122]: for i,sub in enumerate(testlist): 
    .....:  for j,num in enumerate(sub): 
    .....:   if num==1: print("[{}][{}]".format(i,j)) 
    .....:   
[0][0] 
[1][2] 
[2][1] 

如果你想看起來對於任何通用值的函數:

def search(L, val): 
    answer = [] 
    for i, sub in enumerate(L): 
     for j,num in enumerate(sub): 
      if num==val: 
       answer.append([i,j]) 
    return answer 

如果你想要一個班輪:

val = 1 
answer = [[i,j] for i,sub in enumerate(testlist) for j,num in enumerate(sub) if num==val] 
+0

啊我看到了。但是沒有更短的代碼? –

+0

@RossJohnson:查看編輯 – inspectorG4dget

+0

謝謝!我想提取列表中的值的位置不會像打印測試列表[0] [0]那樣簡單, –

0
ll = [[1, 2, 3],[ 5, 3, 1],[ 2, 1, 6]] 

for k, el in enumerate(ll): 
    for i,j in enumerate(el): 
     print("row {} column {} elemen {}".format(k, i, j)) 

row 0 column 0 elemen 1 
row 0 column 1 elemen 2 
row 0 column 2 elemen 3 
row 1 column 0 elemen 5 
row 1 column 1 elemen 3 
row 1 column 2 elemen 1 
row 2 column 0 elemen 2 
row 2 column 1 elemen 1 
row 2 column 2 elemen 6