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

时间:2016-06-26 11:36:25

标签: python

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

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

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

我试过了,但它没有用

2 个答案:

答案 0 :(得分:9)

您可以使用切片分配将序列插入到列表中:

Route::get('/',function()
 {
   //$queue = Queue::push('LogMessage',array('message'=>'Time: '.time()));
   $queue = Queue::later(20,'LogMessage',array('message'=>'Time: '.time()));
   return $queue; 
 });

class LogMessage{
  public function fire($job,$data){
    File::append(app_path().'/queue.txt',$data['message'].PHP_EOL);
     $job->delete(); 
   }
}

请注意,切片基本上是空的; bar = ['a', 'e'] bar[1:1] = foo() print bar bar[1:1]'a'之间的空列表。

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

'e'

如果您要升级到Python 3.5,则可以使用['a'] + list(foo()) + ['e'] 解压缩:

*

请参阅 Python 3.5中的新功能中的Additional Unpacking Generalisations

演示(使用Python 3):

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

答案 1 :(得分:-2)

您也可以使用这段简单的代码:

import itertools

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

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

输出:['a','b','c','d','e']