python 是否用特定索引中的另一个列表扩展列表?

kh212irz  于 2023-01-16  发布在  Python
关注(0)|答案(4)|浏览(139)

在python中,我们可以使用extend()方法将列表添加到彼此中,但是它会将第二个列表添加到第一个列表的末尾。

lst1 = [1, 4, 5]
lst2 = [2, 3]

lst1.extend(lst2)

Output:
[1, 4, 5, 2, 3]

我如何添加第二个列表作为第一个元素的一部分?这样的结果是这样的;

[1, 2, 3, 4, 5 ]

我尝试使用lst1.insert(1, *lst2),但出现错误;

TypeError: insert expected 2 arguments, got 3
ghhaqwfi

ghhaqwfi1#

对于那些不喜欢阅读评论的人:

lst1 = [1, 4, 5]
lst2 = [2, 3]

lst1[1:1] = lst2
print(lst1)

输出:

[1, 2, 3, 4, 5]
ftf50wuq

ftf50wuq2#

您可以分两步解决问题:

  • 将列表插入到其他列表中
  • 展平结果

代码:

from collections.abc import Iterable

# https://stackoverflow.com/questions/2158395/flatten-an-irregular-arbitrarily-nested-list-of-lists
def flatten(xs):
    for x in xs:
        if isinstance(x, Iterable) and not isinstance(x, (str, bytes)):
            yield from flatten(x)
        else:
            yield x

xs = [1,4,5]
ys = [2,3]
xs.insert(1, ys)
print("intermediate result", xs)
xs = flatten(xs)
print(xs)
hc8w905p

hc8w905p3#

如果您的唯一目标是使列表正确排序,那么您可以在之后使用.extend()和.sort()。

q3aa0525

q3aa05254#

如果列表总是排序的话,@Jamiu有正确的解决方案。
如果列表未按顺序排列,则

lst1 = sorted(lst1+lst2)

相关问题