我有一个整数列表,想要在列表中的某个元素之后附加数据。我知道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, ...]
,依此类推?
答案 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]