如何在Python中返回解压缩列表?

dho*_*kas 4 python tuples return unpack

我想在python中做这样的事情:

def f():
    b = ['c', 8]
    return 1, 2, b*, 3
Run Code Online (Sandbox Code Playgroud)

我想要f归还元组的地方(1, 2, 'c', 8, 3).我找到了一种方法来使用itertools后面的tuple,但这不是很好,我想知道是否有一种优雅的方式来做到这一点.

sha*_*neb 10

请注意,接受的答案解释了在将某些值作为包含其他一些值的元组的一部分返回时如何解包它们。如果只想返回解压后的列表怎么办?跟进上面的评论:

def func():
   list1 = [1,2,3]
   return *list1
Run Code Online (Sandbox Code Playgroud)

这给出了SyntaxError: invalid syntax.

解决方案是在返回值后面添加括号()逗号,,告诉 Python 这个解包列表是元组的一部分:

def func():
   list1 = [1,2,3]
   return (*list1,)
Run Code Online (Sandbox Code Playgroud)


ken*_*ytm 9

解包操作符*出现在之前b,而不是之后.

return (1, 2, *b, 3)
#      ^      ^^   ^
Run Code Online (Sandbox Code Playgroud)

但是,这只适用于Python 3.5+(PEP 448),还需要添加括号以防止出现SyntaxError.在旧版本中,用于+连接元组:

return (1, 2) + tuple(b) + (3,)
Run Code Online (Sandbox Code Playgroud)

tuple如果b已经是元组而不是列表,则不需要调用:

def f():
    b = ('c', 8)
    return (1, 2) + b + (3,)
Run Code Online (Sandbox Code Playgroud)