Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何合并列表列表中的两个元素?_Python_List - Fatal编程技术网

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个元素的列表。哦,对不起,误解了。我已经改正了。