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

时间:2016-06-09 16:57:50

标签: python return tuples unpack

我试图在python中做这样的事情:

df
  Enumeration.area County Household.members     id
              (dbl) (fctr)             (dbl)  (chr)
1                1      a                 4  1 a 4
2                1      a                 6  1 a 6
3                1      b                 5  1 b 5
4                2      a                 8  2 a 8
5                2      a                10 2 a 10
6                2      a                 9  2 a 9
7                3      b                 3  3 b 3
8                3      a                 4  3 a 4
9                3      b                 3  3 b 3

df %>% distinct(id)
  Enumeration.area County Household.members     id
             (dbl) (fctr)             (dbl)  (chr)
1                1      a                 4  1 a 4
2                1      a                 6  1 a 6
3                1      b                 5  1 b 5
4                2      a                 8  2 a 8
5                2      a                10 2 a 10
6                2      a                 9  2 a 9
7                3      b                 3  3 b 3
8                3      a                 4  3 a 4

我希望def f(): b = ['c', 8] return 1, 2, b*, 3 返回元组f。我找到了一种方法,使用(1, 2, 'c', 8, 3)后跟itertools,但这不是很好,我想知道是否有一种优雅的方法来做到这一点。

1 个答案:

答案 0 :(得分:9)

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

return (1, 2, *b, 3)
#      ^      ^^   ^

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

return (1, 2) + tuple(b) + (3,)

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

def f():
    b = ('c', 8)
    return (1, 2) + b + (3,)