首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将列表中的元素作为变量返回?

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

Stack Overflow用户
提问于 2014-05-08 12:18:27
回答 3查看 945关注 0票数 1

我有一个复杂的变量,如下所示.

代码语言:javascript
复制
test_list[[test1, test1_var1, test1,var2], [test2, test2_var1]]

我编写了一个函数,用于从所需的测试中提取变量,请参阅下面.

代码语言:javascript
复制
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:]

这会返回如下内容..。

代码语言:javascript
复制
[test1_var1, test1_var2]

我希望能够将变量作为单个变量返回,而不是返回列表中的元素。我该怎么做呢?如何返回变量的变量数?(有点像*args,但用于返回而不是参数)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-05-08 12:23:30

实际上,您可以通过使用列表来做您想做的事情:

代码语言:javascript
复制
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:]

为您提供的是析构数组语法:

代码语言:javascript
复制
foo, bar = find_text(x, y)

如果要将结果作为列表获得,则可以:

代码语言:javascript
复制
l = find_text(x,y)

如果只想获得一个元素:

代码语言:javascript
复制
foo, _ = find_text(x,y)
_, bar = find_text(x,y)

如果您喜欢阅读,以下是一些参考资料:

票数 1
EN

Stack Overflow用户

发布于 2014-05-08 12:24:09

在python中,返回多个变量的对应于返回任何可迭代的,因此返回列表和“多变量”之间没有实际区别:

代码语言:javascript
复制
def f():
    return 1,2
def g():
    return [1,2]
a,b=f()
c,d=g()

这两个函数之间唯一的区别是,f返回一个元组,而g返回一个列表--如果对返回值使用多个赋值,则这是无关紧要的。

票数 2
EN

Stack Overflow用户

发布于 2014-05-08 12:31:43

只需使用内置过滤器并在函数调用中展开结果:

代码语言:javascript
复制
def search(haystack, needle):
    return filter(lambda x: x[0] == needle, haystack)[0][1:]

a,b = search(test_list, 'test1')

请记住,如果您的结果是两个以上的项目,上述将失败。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23541568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档