Python返回多个值以添加到列表中间

2024-04-18 18:09:14 发布

您现在位置:Python中文网/ 问答频道 /正文

是否可以创建一个返回以下几个元素的函数:

def foo():
  return 'b', 'c', 'd'

print ['a', foo(), 'e'] # ['a', 'b', 'c', 'd', 'e']

我试过了,但没用


Tags: 函数元素returnfoodefprint
2条回答

您还可以使用以下简单代码:

import itertools

def foo():
  return 'b', 'c', 'd'

l = ['a', foo(), 'e']
x=list(itertools.chain(*l))
print x 

Output: ['a', 'b', 'c', 'd', 'e']

可以将序列插入到具有切片分配的列表中:

bar = ['a', 'e']
bar[1:1] = foo()
print bar

请注意,片本质上是空的;bar[1:1]是介于'a''e'之间的空列表。你知道吗

要在Python 2中的一行上执行此操作,需要连接:

['a'] + list(foo()) + ['e']

如果要升级到Python 3.5,可以改用*解包:

print(['a', *foo(), 'e'])

请参见Python 3.5的新增功能中的Additional Unpacking Generalisations。你知道吗

演示(使用Python 3):

>>> def foo():
...     return 'b', 'c', 'd'
...
>>> bar = ['a', 'e']
>>> bar[1:1] = foo()
>>> bar
['a', 'b', 'c', 'd', 'e']
>>> ['a'] + list(foo()) + ['e']
['a', 'b', 'c', 'd', 'e']
>>> ['a', *foo(), 'e']
['a', 'b', 'c', 'd', 'e']

相关问题 更多 >