我编写了一个代码,它带有一个列表和一个起始点,但如果没有给出起点,我希望它从0开始。我遇到的问题是我希望它从开始迭代(0)到最后(len(a_list)-1),但我不知道如何每次开始上升一次,直到它迭代了所有内容。
这是一个很小的例子:
def test(a_list, start = 0):
final = []
for i in a_list[start]:
final.append(i)
return final
print (test([[1,2,3,4],[2,3,4]]))
输出:[1, 2, 3, 4]
我希望它输出[1, 2, 3, 4, 2, 3, 4]
不改变print (test([[1,2,3,4],[2,3,4]]))
并假设没有给出起点我将如何实现这一目标。
由于
答案 0 :(得分:2)
无需跟踪列表中项目的索引。您只需遍历项目本身。但是,在这种情况下,您希望使用+
而不是append
将它们连接起来来连接列表。
def test(list_of_lists):
final = []
for L in list_of_lists:
final += L
return final
如果您需要从特定索引开始,可以对列表进行切片:
def test(list_of_lists, start = 0):
final = []
for L in list_of_lists[start:]:
final += L
return final
还有several succinct ways to concatenate a list of lists这样的内容,包括列表理解,reduce
和itertools.chain.from_iterable
。
print ([item for L in list_of_lists for item in L])
print (reduce(list.__add__, list_of_lists, []))
from itertools import chain
print (list(chain.from_iterable(list_of_lists))
答案 1 :(得分:0)
遍历整个列表进行迭代。你不必担心它。
final = []
for i in a_list:
final.append(i)
或者,如果您想从start
开始,请执行以下操作:
final = []
for i in range(start, len(a_list - 1):
final.append(i)
这将添加从列表的开头到结尾的值。