如何将列表的元素作为变量返回?

时间:2014-05-08 12:18:28

标签: python list variables elements

我有一个复杂的变量,如下面的那个......

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但是返回而不是参数)

3 个答案:

答案 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')

请记住,如果您的结果超过两项,则上述情况将会失败。