如何在列表中的某个元素之后附加数据

时间:2019-03-31 15:34:06

标签: python-3.x

我有一个整数列表,想要在列表中的某个元素之后附加数据。我知道list函数,但是当我循环使用它时,它会将相同的数据附加在相同位置x上。

这是我所拥有的:

lister = [1, 2, 3, 4, 5]
counter = 0

for i in range (len(lister)):
    lister.insert(i, "Hello")

print(lister) 

运行它时,我得到['Hello', 'Hello', 'Hello', 'Hello', 'Hello', 1, 2, 3, 4, 5]

我如何制作它,以便在运行它时得到[Hello, 1 , Hello, 2, ...],依此类推?

3 个答案:

答案 0 :(得分:3)

小变化:

lister.insert(i*2, "Hello")

答案 1 :(得分:2)

您的循环首先运行,它将“ Hello”作为第一项插入,因此lister变为:['Hello', 1, 2, 3, 4, 5]

第二次运行时,它将“ Hello”作为第二个项目插入,即“ 1”之前的...,因为您在第一位置添加了其他内容。因此lister变为:['Hello', 'Hello', 1, 2, 3, 4, 5]

相反,您每次都必须跳过一个项目:插入第二个Hello时,必须将其插入第三位,而不是第二位。第三打招呼必须在第五位置。然后是第七,然后是第九,等等。

赞:

for i in range (len(lister)):
    lister.insert(i*2, "Hello")

现在,您得到了:

['Hello', 1, 'Hello', 2, 'Hello', 3, 'Hello', 4, 'Hello', 5]

但是,这仍然不是您想要的。要执行您想要的操作,您需要做一个额外的更改:跳过第一项,您可以通过添加位置i*2+1而不是i*2来完成。

答案 2 :(得分:1)

之所以发生这种情况,是因为一旦在列表中插入一个元素,列表中所有元素的整体索引就会更新。因此,在插入新元素时,您需要考虑到这一点,因为旧索引已不再保存

# your code goes here
lister = [1, 2, 3, 4, 5]

# Keep a count of elements inserted till now
insert_count = 0
for i in range (1, len(lister)):
    # The new position of the element is 
    # i + the elements inserted till now
    lister.insert(i + insert_count, "Hello")
    insert_count +=1

print(lister)
# [1, 'Hello', 2, 'Hello', 3, 'Hello', 4, 'Hello', 5]