Python将元素插入到列表中,每次迭代都不同

Posted

技术标签:

【中文标题】Python将元素插入到列表中,每次迭代都不同【英文标题】:Python inserting element to a list varying with each iteration 【发布时间】:2021-09-24 19:59:27 【问题描述】:

我正在尝试在列表中的多个实例中插入一个元素。但是通过这样做,列表的长度是不断变化的。所以,它没有到达最后一个元素。

my_list = ['a', 'b', 'c', 'd', 'e', 'a']
aq = len(my_list)
for i in range(aq):
  if my_list[i] == 'a':
    my_list.insert(i+1, 'g')
    aq = aq+1

print(my_list)

我得到的输出是 -

['a', 'g', 'b', 'c', 'd', 'e', 'a']

我想要得到的输出是 -

['a', 'g', 'b', 'c', 'd', 'e', 'a', 'g']

我怎样才能得到它?

【问题讨论】:

【参考方案1】:

在循环中更改aq 不会更改range。当您进入循环时,它创建了一个迭代器,并且该迭代器不会改变。有两种方法可以做到这一点。最简单的方法是建立一个新列表:

newlist = []
for c in my_list:
    newlist.append(c)
    if c == 'a':
        newlist.append('g')

比较棘手的方法是使用.find() 查找“a”的下一个实例并在其后插入一个“g”,然后继续搜索下一个。

【讨论】:

想知道如何使用find() 来搜索这个字符串列表?【参考方案2】:

这是使用内置 itertools.chain.from_iterable 编写它的好方法:

from itertools import chain
my_list = ['a', 'b', 'c', 'd', 'e', 'a']
my_list = list(chain.from_iterable((x, "g") if x == "a" else x for x in my_list))
# ['a', 'g', 'b', 'c', 'd', 'e', 'a', 'g']

这里,"a" 在列表中的每一次出现都被替换为"a", "g",否则元素将被单独保留。

【讨论】:

以上是关于Python将元素插入到列表中,每次迭代都不同的主要内容,如果未能解决你的问题,请参考以下文章

python列表中依次插入不同元素

147. 对链表进行插入排序

对链表进行插入排序

279,对链表进行插入排序

LeetCode--147.对链表进行插入排序

Python基础