压缩两个列表,同时压缩较短的列表

时间:2020-04-04 20:59:01

标签: python list loops concatenation

a = ["1", "2", "3"] 
b = ["a", "b", "c", "d", "e"] 
desired_output = ["1a", "2b", "3c", "1d", "2e"] 

大家好,我想将ab合并到一个新列表中,其中b可以是任意长度,但是我只想循环浏览{{1 }}。

(注:我尝试使用a,其中zip_longest到列表fillvalue=cycle ...但这是正确的方法吗?)

提示? 谢谢。 丹。

2 个答案:

答案 0 :(得分:1)

尝试这个:

from itertools
a = ["1", "2", "3"]
b = ["a", "b", "c", "d", "e"]
[x + y for x, y in zip(itertools.cycle(a), b)]

答案 1 :(得分:0)

您将要使用一些模块化算法来包装较短列表的索引,直到完成所需的次数以匹配较长列表的长度为止。

a = ['1','2','3']
b = ['a','b','c','d','e']

desired_output = []
for i in range(len(b)):
    a_index = i % len(a)
    index = a_index + i
    val = a[a_index] + b[i]
    desired_output.append(val)

更为紧凑的是,您可以使用列表推导。

desired_output = [a[i % len(a)] + b[i] for i in range(len(b))]