【问题标题】:How to return *result without using result[0], result[1]如何在不使用 result[0]、result[1] 的情况下返回 *result
【发布时间】:2022-09-22 20:51:09
【问题描述】:

有没有一种方法可以返回列表列表而无需通过索引显式访问列表?我只想返回类似 return *result 的东西。我怎么能在python中做到这一点?

def func():
    result = [[1,2],[3,4]] 
    return result[0], result[1] # I want to return *result 

print(func)

编辑:我不能只返回结果,因为我需要返回每个元素,而不是整个列表,因为存在约束。我也不知道结果有多大。所以可能要返回[100]

  • 为什么不简单地return result?如果您出于某种原因想将其作为元组返回,return tuple(result)?
  • 只是return result。然后你可以做first_pair, second_pair = func()
  • 无论哪种方式,你都会得到一个序列;该序列是元组还是列表有什么关系?
  • *result 本身不是一个表达式;它是语法的一个片段,例如,对于像 [*result, 5] 这样的列表显示。

标签: python list variables return arguments


【解决方案1】:

返回tuple

def func():
    result = [[1,2],[3,4]] 
    return tuple(result)

输出:([1, 2], [3, 4])

【讨论】:

  • 我误解了这个问题吗?
  • 这里没有问题。使用逗号分隔多个返回值的本质是返回一个元组,就像这个答案一样。
【解决方案2】:

这在 python 中是不允许的。 Python 现在确实允许返回多个东西。 python 这样做的方式是将它们包装在一个元组中。对于您的示例:

def func():
    result = [[1,2],[3,4]] 
    return result[0], result[1]

def func2():
    result = [[1,2],[3,4]] 
    return tuple(result)

print(type(func())) # prints tuple
print(type(func2())) # prints tuple

您可以通过解开函数调用的返回值来取回各个元素。这是一个例子:

print(func()) # prints ([1, 2], [3, 4])
print(func2()) # prints ([1, 2], [3, 4])

print(*func()) # prints [1, 2] [3, 4]
print(*func2()) # prints [1, 2] [3, 4]

我建议简单地按原样返回列表。我看到使它成为元组的唯一好处是元组是不可变的,如果这是你需要的,那么return tuple(result)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 2023-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多