我有一个类似以下的列表:
[[11710000035, 11710000034], [11710000038, 11710000031, 11710000033], [11710000099]]
我想将长度为1的所有子列表与另一个合并(与哪一个无关)。
例如,我想获得:
[[11710000035, 11710000034], [11710000038, 11710000031, 11710000033, 11710000099]]
或
[[11710000035, 11710000034, 11710000099], [11710000038, 11710000031, 11710000033]]
有什么主意吗?
答案 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])