2016-08-14 50 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开头。你应该编辑你的问题,包括你真正想做的事情。这可能是一种更好,更安全的方式。