2017-07-07 109 views
-2

鑑於我有一個多維列表的目標位置。即一個索引存儲在一個變量中。如何使用python中的變量訪問列表的元素

list = [[1,2,3,4,5], 
     [10,20,30,40,50], 
     [5,4,3,2,1], 
     [50,40,30,20,10]] 
target = [3][4] 

如何訪問list [target]?

>>> list[target] 
    10 
+1

'list [3] [4] [1]'? –

+0

什麼是list [target]應該是什麼意思? – khelwood

+8

什麼是'target = [3] [4] [1]'應該是什麼意思? – melpomene

回答

1

你不能直接這樣做,因爲list [variable]將成爲列表的條目;該變量必須是一個索引。

所以,你需要的是一些方法來獲取列表[變量] [變量] [變量]

這不能用一個簡單的變量可悲的是做,即使它是真的很酷。

做到這一點的最好方法是做一個遞歸函數來做到這一點,它把你的列表target=[3,4,1]並返回值,如此。

def target_value(my_list, place): 
    if len(place) == 1: 
     return my_list[place[0]] 
    return target_value(my_list[place[0]],place[1:]) 

您需要調用它作爲一個正常的功能,讓您的列表和目標(target = [3,4,1])作爲參數。

+1

訪問'list [3] [4] [1]'謝謝,那就是我在找什麼。 –

+2

如果你想導入外部函數,Rawing的版本更簡單,或者如果你希望它成爲程序的一部分,這個遞歸函數將會工作。 –

4

如果target給出像[3, 4, 1]指數列表,你可以使用reduce

from functools import reduce # not required in py2 

result = reduce(list.__getitem__, target, my_list) 

請注意,如果你已經使用list爲您的變量的名稱,這將無法正常工作。切勿爲變量使用內建的名稱。將其命名爲my_list或更具描述性的內容。

+0

這很簡單,謝謝。 –