【发布时间】:2018-01-24 08:33:13
【问题描述】:
我之前在 Stack Overflow 上发布了一个问题,询问如何组合由整数值组成的列表,同时对各个索引处的值求和 (Summing lists of different lengths in Python beginning at a specified index using a function)。我从@pault 那里得到了很好的回答,但现在我想知道是否可以在函数中使用*args 来添加任意数量的列表。
例如,我可以有 4 个列表(或任意数量):
a = [0, 1, 2, 3, 4, 5, 6, 7]
b = [2, 4, 6, 8, 10, 12]
c = [1, 1, 1, 1, 1]
d = [2, 2, 2, 2, 2]
我想将列表b、c 和d 插入到a 内的指定索引中。所以我可以说,在a[2] 插入列表b,在a[2] 插入c 在a[5] 插入d。结果将是[0 1 5 8 11 16 19 21]。
这是我目前使用的代码(感谢@pault):
a = [0, 0, 0, 0, 0, 0, 0, 0, 0]
b = [1, 1, 1, 1, 1, 1, 1, 1, 1]
c = [5, 2]
def combine(lista, listb, index_in_list_a_to_start_insert):
newb = [0]*index_in_list_a_to_start_insert + listb
max_len = max(len(lista), len(newb))
newa = lista if len(lista) >= max_len else lista + [0]*(max_len-len(lista))
newb = newb if len(newb) >= max_len else newb + [0]*(max_len-len(newb))
return [a + b for a, b in zip(newa,newb)][0:len(a)]
要点是将任意数量的列表添加到任意索引处的a,同时保持a 的长度相同,例如,如果我在a[6] 处添加列表b,结果将是[0, 1, 2, 3, 4, 5, 8, 11]。我认为我最大的问题是将列表与我希望插入的索引相关联,例如让列表b 进入a[3] 并指定列表c 进入a[4] 等,同时保持列表a 的长度相同,所以也许必须与**kwargs 进行一些配对?比如{'list': 'index'}?我真的不知道该怎么做。我正在使用 Python 3.4.3。
【问题讨论】:
标签: python list function indexing