是否可以合并2个列表列表?

时间:2019-11-04 16:44:16

标签: python

我有3个python列表:

第一个是数字列表:

numbers = ['4554176', '4554178', '4555289', '4555522', '4555661', '4555693', '4555695', '4556068']

第二个是8个列表的列表:

lists   = [
    ['dune', 'pro', 'pc', 'case'],
    ['apple', 'typische', 'kaesereiben', 'muster'],
    ['orientiert', 'profi', 'mac', 'mac'],
    ['handel', 'hersteller', 'pc', 'gehaeusen'],
    ['optik', 'kaesereibe', 'nutzer', 'ueberarbeitete', 'apple'],
    ['design', 'geklont', 'nennt', 'dune', 'pc'],
    ['oktober', 'form', 'kickstarter', 'projekts', 'realitaet'],
    ['annehmen', 'preise', 'genannt', 'signifikant'] 
]

第三个列表与第二个列表相同,但词干为:

lists1   = [
    ['dune', 'pro', 'pc', 'case'],
    ['apple', 'typisch', 'kaesereibe', 'must'],
    ['orientier', 'profi', 'mac', 'mac'],
    ['handel', 'hersteller', 'pc', 'gehaeuse'],
    ['optik', 'kaesereib', 'nutz', 'ueberarbeit', 'apple'],
    ['design', 'geklon', 'nenn', 'dune', 'pc'],
    ['oktober', 'form', 'kickstart', 'projekts', 'realitaet'],
    ['annehm', 'preis', 'genann', 'signifikant'] 
]

现在,我想把每个列表的未梗塞词干的单词写到新列表中。

另外,我想将第一个列表中的数字写到新创建的列表中。

结果应如下所示:

new_list = [['dune','dune','4554176'],
           ['pro','pro','4554176'], 
           ['pc','pc','4554176']
           ...,   
           ['annehmen','annehm','4556068']]

有人可以帮忙吗?

4 个答案:

答案 0 :(得分:2)

只需遍历可能的值并构建一个新列表:

result = []

for i in range(len(lists)):
    for j in range(len(lists[i])):
        result.append([lists[i][j], lists1[i][j], numbers[i]])

print(result)

输出:

[['dune', 'dune', '4554176'], ['pro', 'pro', '4554176'], ['pc', 'pc', '4554176'], ['case', 'case', '4554176'] .... ]

答案 1 :(得分:2)

您可以将嵌套列表理解与zip一起使用:

new_list = [[*s, n] for n, l in zip(numbers, zip(lists, lists1)) for s in l]

结果:

[['dune', 'dune', '4554176'], ['pro', 'pr:43)o', '4554176'], ['pc', 'pc', '4554176'],['case', 'case', '4554176'], ['apple', 'apple', '4554178'], ['typische', 'typische', '4554178'], ['kaesereiben', 'kaesereiben', '4554178'], ['muster', 'muster', '4554178'], ['orientiert', 'orientiert', '4555289'], ['profi', 'profi', '4555289'], ['mac', 'mac', '4555289'], ['mac', 'mac','4555289'], ['handel', 'handel', '4555522'], ['hersteller', 'hersteller', '4555522'], ['pc', 'pc', '4555522'], ['gehaeusen', 'gehaeusen', '4555522'], ['optik', 'optik', '4555661'], ['kaesereibe', 'kaesereibe', '4555661'], ['nutzer', 'nutzer', '4555661'], ['ueberarbeitete', 'ueberarbeitete', '4555661'], ['apple', 'apple', '4555661'], ['design', 'design', '4555693'], ['geklont', 'geklont', '4555693'], ['nennt', 'nennt', '4555693'], ['dune', 'dune','4555693'], ['pc', 'pc', '4555693'], ['oktober', 'oktober', '4555695'], ['form', 'form', '4555695'], ['kickstarter', 'kickstarter', '4555695'], ['projekts', 'projekts', '4555695'], ['realitaet', 'realitaet', '4555695'], ['annehmen', 'annehmen', '4556068'], ['preise', 'preise', '4556068'], ['genannt', 'genannt', '4556068'], ['signifikant', 'signifikant', '4556068']]

答案 2 :(得分:1)

您可以使用for循环来遍历每个数字,然后在列表理解中可以使用zip函数合并嵌套列表

newlist = []
for i in range(len(numbers)):
    newlist+= [[j,k,numbers[i]] for j,k in zip(lists[i],lists1[i])]

print(newlist)

答案 3 :(得分:0)

假设numbers的大小与两个列表的大小相同,则可以很容易地通过列表理解和使用range进行索引来做到这一点:

new_list = [ [lists[i][j], lists1[i][j], numbers[i] for j in range(len(lists[i]))] for i in range(len(numbers)) ]