问题描述
我正在尝试在列表的特定索引中插入不同的元素。
以这个例子为例:
l = [1,2,3,4,5]
假设我想在列表的每个值之后系统地插入字符串 'k'。 为此,我知道我可以使用枚举:
r = l.copy()
for idx,val in enumerate(l):
r.insert(idx,'k')
或使用计数器手动执行:
index = 0
for i in l:
index += 1
l.insert(index,'k')
print(index)
if index >=5:
index = 0
break
但是当我同时尝试两者时,它只会在同一索引中插入与列表中的值一样多的值:
[1,'k',5]
我错过了什么?
提前致谢。
解决方法
解决方案:
我会做的是:
l = data
l2 = []
for i in data:
l2.append(i)
l2.append("k")
您的代码中发生了什么:
首先在索引 1 处插入 k
[1,index 1,2,3,4] => [1,k,4]
那么如果在索引 2 处插入,
[1,index 2,4]
等
另外作为旁注,在大型数据集上插入必须移动列表中的所有项目,因此它会非常慢。我的解决方案消除了这一点,但会创建列表的副本。