Python 如何合并列表列表中的两个元素?
我有如下列表:Python 如何合并列表列表中的两个元素?,python,list,Python,List,我有如下列表: [[11710000035, 11710000034], [11710000038, 11710000031, 11710000033], [11710000099]] 我想把所有长度为1的子列表与另一个子列表合并,不管是哪一个子列表 例如,我想获得: [[11710000035, 11710000034], [11710000038, 11710000031, 11710000033, 11710000099]] 或 有什么想法吗?您可以将列表与+ 就你而言: result
[[11710000035, 11710000034], [11710000038, 11710000031, 11710000033], [11710000099]]
我想把所有长度为1的子列表与另一个子列表合并,不管是哪一个子列表
例如,我想获得:
[[11710000035, 11710000034], [11710000038, 11710000031, 11710000033, 11710000099]]
或
有什么想法吗?您可以将列表与+ 就你而言:
result_list = [your_list[0]]
result_list.append(your_list[1] + your_list[2])
您可以将列表与+合并 就你而言:
result_list = [your_list[0]]
result_list.append(your_list[1] + your_list[2])
另一种方法是从列表中删除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)
另一种方法是从列表中删除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)
这里有一个分为两步的解决方案 首先,收集列表中包含多个元素的所有项
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]]
这里有一个分为两步的解决方案 首先,收集列表中包含多个元素的所有项
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]]
使用链的变体:
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 )
使用链的变体:
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 )
这是另一种方法。关心数据的长度。如果数据长度小于2,则抛出错误 数据=[[11710000035,11710000034],[11710000038,11710000031,11710000033],[1171000009]] 对于idx,枚举数据中的子列表: iflensub_列表==1: ifidx=0: 数据[idx-1]+=data.popidx 其他: 数据[idx+1]+=data.popidx 打印数据
这是另一种方法。关心数据的长度。如果数据长度小于2,则抛出错误 数据=[[11710000035,11710000034],[11710000038,11710000031,11710000033],[1171000009]] 对于idx,枚举数据中的子列表: iflensub_列表==1: ifidx=0: 数据[idx-1]+=data.popidx 其他: 数据[idx+1]+=data.popidx 打印数据
这是一个简单、不那么优雅的潜在解决方案:
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)
这是一个简单、不那么优雅的潜在解决方案:
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)
你能解释一下上下文吗?要求很模糊。例如,为什么不简单地将其展平为[11710000035、11710000034、1111000099、111100038、1111000031、1111000033]?因为我只需要合并1长度的元素,我想保持其他元素不变。请解释上下文?要求很模糊。例如,为什么不简单地将其展平为[11710000035、11710000034、1111000099、111100038、1111000031、1111000033]?因为我只需要合并1长度的元素,我想保持另一个元素不变她需要合并只有1个元素的列表。他需要合并只有1个元素的列表。我想将1长度的元素作为数字附加,而不是作为1个元素的列表。抱歉,误解了。我已经更正了。我想把1长度的元素附加为数字,而不是1个元素的列表。哦,对不起,误解了。我已经改正了。