如何将列表中的元素与另一个嵌套列表连接起来?

How to concatenate elements from a list with another nested list?

我正在尝试将一个列表与一个嵌套列表连接起来,但没有使用字典,因为字典没有保持相同的顺序,这让我正在做的事情有点搞砸了。不确定这是否可能,但基本上我所拥有的是:

list1=['a','b','c','d','e']
list2=[['1','2','3'],['4','5','6'],['7','8','9'],['T1','T2','T3'],[]]

我需要的输出是:

[['a_1','a_2','a_3'],['b_4','b_5','b_6'],['c_7','c_8','c_9'],['d_T1','d_T2','d_T3'],['e']]

我可以用这段代码用字典来完成:

dict = dict(zip(list1, list2))
for key,values in dict.iteritems():
    vals = dict[key]
    values = [key + '_' + str(v) for v in vals]
    test.append(values)

但是顺序不一样,稍后我需要将一些列表匹配在一起...所以我真的更愿意避免字典部分,有人知道吗?

谢谢!

你快到了:

test = []
for key, values in zip(list1, list2):
    if values:
        values = [key + "_" + str(v) for v in values]
        test.append(values)
    else:
        test.append([key])
print(test)

只需遍历 zip 中的对;如果你先把它打包在 dict 中,它会弄乱 python 2 中的顺序(在 python >= 3.4 中你没问题!)。

您也可以将所有内容直接打包到列表理解中(并可能使用字符串格式):

test = [
    ["{}_{}".format(key, v) for v in values] if values else [key]
    for key, values in zip(list1, list2)
]