2017-02-28 83 views
0

所以說我有list1和list2。如何使列表中的一個元素使用python調用另一個列表中的元素?

list1 = [n1,n2,n3,n4,n5,n6,n7,n8,n9,n0,star,pound] 

list2 = [1,2,3,4,5,6,7,8,9,0,star,pound] 

如何寫一個函數,當列表中的一個元素被調用時,list2中的相應元素被調用?

這可能已在另一篇文章中得到解答,但我一直無法找到和/或理解如何做到這一點。

---編輯---

約翰·科爾曼的評論回答我的問題,而是要幫助別人,將來讀這我會澄清一些事情。

「呼叫」可能是錯誤的用語,我絕對是編程的新手。這裏是我在這個線程的幫助下如何使用代碼。

n1 = 5 
n2 = 6 
n3 = 13 
n4 = 19 
n5 = 26 
n6 = 12 
n7 = 16 
n8 = 20 
n9 = 12 
n0 = 4 
star = 17 
pound = 27 

inputs = [n1,n2,n3,n4,n5,n6,n7,n8,n9,n0,star,pound] 
numbers = [1,2,3,4,5,6,7,8,9,0,star,pound] 
shows = dict(zip(inputs,numbers)) 
count = 1 

def loop2(): 
for input in inputs: 
    if GPIO.input(input) == False: 
     print '%s' % shows[input] 
+2

「調用」列表元素意味着什麼?您的列表似乎不包含可馴化的東西。 –

+0

你能澄清你所說的「列表中的元素被稱爲」的意思嗎?通常作爲可以調用的東西的功能。這是一個函數名稱列表嗎? – JawguyChooser

回答

1

您可以使用.index()查找在其中一個列表中的一個元素出現,再喂該索引到其他列表:

>>> list1 = ['n1','n2','n3','n4','n5','n6','n7','n8','n9','n0','star','pound'] 
>>> list2 = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'star', 'pound'] 
>>> list2[list1.index('n5')] 
'5' 

或者,你可以創建一個字典鏈接兩個列表:

>>> d = dict(zip(list1,list2)) 
>>> d['n5'] 
'5' 
+0

請記住,找不到該項目時.index()會返回ValueError。 .find()將返回-1,如果該項目不存在。如果使用.index(),則可能需要使用try:except:語句,而如果使用find,則可以測試> -1。 – JawguyChooser

+0

@JawguyChooser好點--OP需要添加一些錯誤處理來使這個強大,但它似乎是他們正在尋找的東西(即使措辭有點模糊)。 –

+0

你也可以使用'd = dict(zip(list1,list2))' –

0

沒有多少可以回答,如果你不弄清楚你是什麼意思的「相應的列表2元素被稱爲」你的意思是函數調用或東西?

無論如何,不​​管情況如何,你都需要在你想要的列表中定義兩個項目之間的關係。在上面的例子中,我最好的猜測是list1n1 - >list21,或者按索引對應。

可以實現這一點通過定義一個字典,像

relate_dict = {"n{}".format(k):k for k in list2} 

所以每relate_dict[key1]東西,與key1list1將返回list2對應,即relate_dict [ 'N1'] => '1'

在索引的情況下,只需使用zip

相關問題