我有一个复杂的变量,如下面的那个......
test_list[[test1, test1_var1, test1,var2], [test2, test2_var1]]
我编写了一个从所需测试中提取变量的函数,见下文......
def find_test(test_list, search_term):
for index in range(len(test_list)):
if test_list[index][0] == search_term:
return test_list[index][1:]
返回类似以下内容的内容......
[test1_var1, test1_var2]
我希望能够将变量作为单个变量而不是列表元素返回。我该怎么做呢?如何返回变量数量的变量? (有点像* args但是返回而不是参数)
答案 0 :(得分:2)
在python中,返回多个变量对应于返回任何可迭代的,因此返回列表或“多个变量”之间没有实际区别:
def f():
return 1,2
def g():
return [1,2]
a,b=f()
c,d=g()
这两个函数之间的唯一区别是f
返回一个元组,g
返回一个列表 - 如果你对返回值使用多个赋值,则无关紧要。
答案 1 :(得分:1)
实际上,您可以使用列表来执行您想要的操作:
def find_test(test_list, search_term):
for index in range(len(test_list)):
if test_list[index][0] == search_term:
return test_list[index][1:]
解构数组语法适合您:
foo, bar = find_text(x, y)
如果您希望将结果作为列表获取,则可以:
l = find_text(x,y)
如果你只想获得一个元素:
foo, _ = find_text(x,y)
_, bar = find_text(x,y)
如果你想阅读,这里有一些资源:
答案 2 :(得分:0)
只需使用内置过滤器并在函数调用中展开结果:
def search(haystack, needle):
return filter(lambda x: x[0] == needle, haystack)[0][1:]
a,b = search(test_list, 'test1')
请记住,如果您的结果超过两项,则上述情况将会失败。