如何在列表列表中合并两个元素?

时间:2019-11-26 13:05:14

标签: python list

我有一个类似以下的列表:

[[11710000035, 11710000034], [11710000038, 11710000031, 11710000033], [11710000099]]

我想将长度为1的所有子列表与另一个合并(与哪一个无关)。

例如,我想获得:

[[11710000035, 11710000034], [11710000038, 11710000031, 11710000033, 11710000099]]

[[11710000035, 11710000034, 11710000099], [11710000038, 11710000031, 11710000033]]

有什么主意吗?

6 个答案:

答案 0 :(得分:2)

这是两个步骤的解决方案。

首先,收集列表中包含多个元素的所有项目。

l = [[11710000035, 11710000034], [11710000038, 11710000031, 11710000033], [11710000099]]
r = [i for i in l if len(i) > 1]

然后将单个元素添加到r的一项中。由于这对您而言并不重要,因此我只需将它们添加到列表中的第一项即可。

for i in l:
    if len(i) == 1:
        r[0] += i

print(r)
[[11710000035, 11710000034, 11710000099], [11710000038, 11710000031, 11710000033]]

答案 1 :(得分:1)

另一种方法是从列表中删除长度为1的元素,然后添加另一个列表,并将这些元素附加到列表的第一个元素中。

a = [[11710000035, 11710000034], [11710000038,
                                  11710000031, 11710000033], [11710000099]]
x = []
for ind, item in enumerate(a):
    if (len(item) == 1):
        x.append(a[ind][0])
        del a[ind]

if a:
    a[0].extend(x)

print(a)

答案 2 :(得分:1)

使用链的变体:

from itertools import chain

l = [[11710000035, 11710000034], [11710000038, 11710000031, 11710000033], [11710000099]]

big_lists = [i for i in l if len(i) > 1 ]
big_lists[0] += chain.from_iterable( i for i in l if len(i) == 1 )

答案 3 :(得分:1)

这是另一种方法。关心数据的长度。如果数据长度小于2,则会引发错误

data = [[11710000035, 11710000034], [11710000038, 11710000031, 11710000033], [11710000099]]

for idx, sub_list in enumerate(data):
  if(len(sub_list)==1):
    if(idx!=0):
      data[idx-1] += data.pop(idx)
    else:
      data[idx+1] += data.pop(idx)

print(data)

答案 4 :(得分:1)

这是一个简单易行的潜在解决方案:

l = [[11710000035, 11710000034], [11710000038, 11710000031, 11710000033], [11710000099]]
j = 0
for i, e in enumerate(l):
   if len(e) > 1:
     j = i
   if len(e) == 1:
     l[j] = l[j] + e
     del l[i]
print(l)

答案 5 :(得分:-1)

您可以使用+合并列表。

在您的情况下:

result_list = [your_list[0]]
result_list.append(your_list[1] + your_list[2])