如何将字符串列表合并到列表列表中?

How to merge list of strings into list of lists?

提问人:AhmadShahMassoud 提问时间:8/16/2022 最后编辑:blackravenAhmadShahMassoud 更新时间:8/26/2022 访问量:172

问:

我有一个这样的列表:

list_1 = ['2a', '3b', '2c', '2d', ... ]

还有另一个这样的列表:

list_2 = [[], [], [], ['3a'], ['3b']... ]

这两个列表具有相同的大小。我想合并它们以获得第三个:

list_3 = [['2a'], ['3b'], ['2c','3a'], ['2d','3b']...]

我尝试使用 dataFrames 进行合并,我尝试了一些不同的循环,但我得到的都是错误的。我尝试了一些类似问题的答案,但我得到的都不是我所期望的。

这是我尝试过的一些例子:

list_3 = list(product(list_1, list_2))
for i in list_2:
     for j in list_2:
         list_3 = list.append(str(i) + str(j))

list_3 =  [[str(list_1[x]) + str(x)] for x in list1,list_2]

我遇到的问题是:

list_3 = [['2a', '3b', '2c', '2d'...], [],[]....]
list_3 = [('2a', []), ('3b',[]), ('2c',['3a']), ...]

你有什么解决方案吗?如果答案已经存在,请链接它。

Python 字符串 列表 嵌套 嵌套列表

评论


答:

3赞 Guy 8/16/2022 #1

只需列表并在将字符串更改为后使用合并每个列表ziptuple(str, list)+list

list_3 = [[x] + z for x, z in zip(list_1, list_2)]

另一种方法是使用zipenumerate

list_3 = [[x] + list_2[i] for i, x in enumerate(list_1)]

输出

print(list_3) # [['2a'], ['3b'], ['2c', '3a'], ['2d', '3b']]
1赞 azro 8/16/2022 #2

你想配对东西,不要双循环或产品任何东西

用于对两者进行迭代,然后生成合并zip

list_1 = ['2a', '3b', '2c', '2d']
list_2 = [[], [], ['3a'], ['3b']]

result = []
for value1, sublist2 in zip(list_1, list_2):
    result.append([value1] + sublist2)

print(result)
# [['2a'], ['3b'], ['2c', '3a'], ['2d', '3b']]
0赞 blackraven 8/16/2022 #3

我会确保两个列表具有相同的长度,然后使用它们的索引附加到新列表中。仅使用列表推导的简单解决方案:list[index]

list_1 = ['2a', '3b', '2c', '2d']
list_2 = [ [], [], ['3a'], ['3b'] ]

if len(list_1) == len(list_2):
    new_list = [[list_1[i]] + list_2[i] for i in range(len(list_1))]
print(new_list)

输出

[['2a'], ['3b'], ['2c', '3a'], ['2d', '3b']]