在 for 循环中插入给了我一个无限循环,并且不能在我想要的地方插入我想要的

问题描述

我正在尝试在列表的特定索引中插入不同的元素。

以这个例子为例:

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]

另外作为旁注,在大型数据集上插入必须移动列表中的所有项目,因此它会非常慢。我的解决方案消除了这一点,但会创建列表的副本。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...