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将元素插入到列表中,每次迭代都不同的主要内容,如果未能解决你的问题,请参考以下文章