Python 创建指定长度的列表并合并其他列表

Python 创建指定长度的列表并合并其他列表,python,Python,我试图生成一个列表,该列表结合了其他两个列表的元素,一个是值,另一个不是值 我尝试过使用两个单独的列表,并使用join函数和append函数在特定阶段将这两个元素组合在一起。 为了匹配列表d和列表a的长度,我使用了一个while循环作为计数器 a=7*[1] b=[1,2,3,4,5] c=['a','b','c'] d=[] 我试图实现的结果是: 列表d变为列表a的长度 &是列表b和列表c的组合 d=[1a,1b,1c,2a,2b,2c,3a] 现在你能想出一个简单的解决办法吗 de

我试图生成一个列表,该列表结合了其他两个列表的元素,一个是值,另一个不是值

我尝试过使用两个单独的列表,并使用join函数和append函数在特定阶段将这两个元素组合在一起。 为了匹配列表d和列表a的长度,我使用了一个while循环作为计数器

a=7*[1]

b=[1,2,3,4,5]

c=['a','b','c']

d=[]
我试图实现的结果是: 列表d变为列表a的长度 &是列表b和列表c的组合

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

现在你能想出一个简单的解决办法吗

def create(bk, ck, len_required):
    dk = []
    for bitem in bk:
        for citem in ck:
            dk.append(str(bitem) + citem)
            if len(dk) == len_required:
                return dk


len_required = len(a)
b = [1, 2, 3, 4, 5]
c = ['a', 'b', 'c']
d = create(b, c, len_required)

这将i从0迭代到len(a),并在输出中连接b[int(i/len(c))%len(b)]和c[i%len(c)]。

您可以通过列表理解来完成:

d = [str(v)+L for v in b*len(a) for L in c][:len(a)]
或者,如果允许您使用itertools:

from itertools import cycle

cycleA = cycle(str(v)+L for v in b for L in c)
d = [ next(cycleA) for _ in a ] 

您已经用模糊的术语描述了您的代码,为什么不实际发布它呢?如何组合不同类型的元素?一个是int,另一个是string。此外,基于相同长度的组合,可能存在不同的列表。请尝试详细说明所需内容。如果
a
的长度为50!?
from itertools import cycle

cycleA = cycle(str(v)+L for v in b for L in c)
d = [ next(cycleA) for _ in a ]