如何在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()返回的单个列表
答案 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))