Python列表在递增时附加

时间:2012-03-02 07:15:47

标签: python algorithm list

如何在python中增加列表。在以下情况中

这意味着    我想将几个列表附加到单个列表中很容易就像list1 + list2

但我需要返回一个最终列表,其中将附加所有列表,并且每个列表都将是迭代的结果。我在下面尝试的是什么:

def result():  
    temps = [list of links]
    final_list = [] 
    for link in temps:
        final_list = final_list+get_list(link) # get list returning a list and temps is a list
    return final_list


 def get_list(link):
        #process the link and return a list
        return li

但是每次循环之前,final_list都被初始化,我得到了[]+get_list() 我需要最终列表中的所有先前值。

  

示例输入:[链接列表]示例输出:final_list #contains   将所有数据作为从get_list()返回的单个列表

3 个答案:

答案 0 :(得分:1)

所以你想把一个东西列表变成一个列表并将它展平?

>>> strings = ["one two", "three four", "five six"]
>>> [value for s in strings for value in s.split()]
['one', 'two', 'three', 'four', 'five', 'six']

答案 1 :(得分:1)

如果你想要这样的东西:

get_list(L1) -> ['L1_val1','L1_val2']
get_list(L2) -> ['L2_val1','L2_val2']
result([L1,L2]) -> ['L1_val1','L1_val2','L2_val1','L2_val2'] (a)

result([L1,L2]) -> [['L1_val1','L1_val2'],['L2_val1','L2_val2']] (b)

我建议:

内置地图:

map(get_list,(L1,L2,..)) -> [['L1_val1','L1_val2'],['L2_val1','L2_val2'],..]

itertools.chain:

chain(*map(get_list,(L1,L2,..))) -> iterator obj # star unpacks tuple into sequens of args
List(chain(*map(get_list,(L1,L2,..)))) -> ['L1_val1','L1_val2','L2_val1','L2_val2',..]

因此您的代码可以重写为

from itertools import chain

def result_a(list_of_links):  
    return List(chain(*map(get_list,list_of_links)))

def result_b(list_of_links):  
    return map(get_list,list_of_links)

def get_list(one_link):
    #process the link and return a list
    return list_of_processed_values

答案 2 :(得分:0)

所有其他答案都比需要的更复杂。而不是:

final_list = [] 
for link in temps:
    final_list = final_list+get_list(link)

使用:

final_list = [] 
for link in temps:
    final_list.extend(get_list(link))