2016-08-14 46 views
0

所以我有一個腳本,允許我在命令行中鍵入一些東西,並讓它顯示相應的列表。例如,如果我運行它,並打印替換我的exec()代碼位

這裏是重要的位:

list_of_strings = ['mexico', 'america', 'canada'] 
list_of_lists = [ [0,0,0,3], [4,9,3,6], [5,6,7] ] 


for name in range(len(list_of_strings)): 
     exec(list_of_strings[name] + ' = list_of_lists[name]') 

運行此,並鍵入「美國」(不含引號),返回[4,9,3,6] 。

我的問題是,當我想這個位轉換成一個功能,如

def my_zip(list_of_strings, list_of_lists): 
    for name in range(len(list_of_strings)): 
     return exec(list_of_strings[name] + ' = list_of_lists[name]') 

my_zip(list_of_strings, list_of_lists) 

它不再工作。「美國」(不含引號)不被識別爲一個變量。

我覺得我應該使用字典,但任何指針將不勝感激!

回答

0

3個大問題:

  1. exec不返回任何東西。

  2. 您在for循環內有return。它只會運行一次迭代。由於這個原因以及exec什麼都沒有返回的事實,它會在一次迭代後立即返回None

  3. 您正在使用exec開頭。你應該編輯你的問題,包括你真正想做的事情。這可能是一種更好,更安全的方式。