如何将列表中的元素与另一个嵌套列表连接起来?
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)
]
我正在尝试将一个列表与一个嵌套列表连接起来,但没有使用字典,因为字典没有保持相同的顺序,这让我正在做的事情有点搞砸了。不确定这是否可能,但基本上我所拥有的是:
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)
]