如何在Python中追加列表而不重写?

如何在Python中追加列表而不重写?,python,Python,我正在学习如何在列表中添加索引,但我一直在覆盖我的迭代。你能帮忙吗 country = ["Denmark", "Croatia", "Britian", "Canada"] for idx, val in enumerate(country): d = [] d.append(idx) print(d) 您需要将d的定义放在循环之外,否则在每次迭代中,d再次变成一个空列表。d在每次进入循环

我正在学习如何在列表中添加索引,但我一直在覆盖我的迭代。你能帮忙吗

country = ["Denmark", "Croatia", "Britian", "Canada"]
for idx, val in enumerate(country):
    d = []
    d.append(idx)
    print(d)

您需要将
d
的定义放在循环之外,否则在每次迭代中,d再次变成一个空列表。

d在每次进入循环时被实例化为null,请在循环之外定义它

country = ["Denmark", "Croatia", "Britian", "Canada"]
d = []
for idx, val in enumerate(country):
    d.append(idx)
    print(d)

设置它的方法是每次循环时创建列表d

要解决此问题,您需要在进入循环之前声明列表。这样它就不会每次都制作一个没有元素的d的新副本

country = ["Denmark", "Croatia", "Britian", "Canada"]
d = []
for idx, val in enumerate(country):
   
    d.append(idx)
print(d)
输出

丹麦

克罗地亚

英国人


加拿大

不要在循环中使用
d=[]
重新创建列表。将该行置于
for
循环上方。在每次迭代中,您将创建一个新的
d
。模式
d=[]
在for循环外部考虑在for循环外部定义变量
d
。这将确保
d
不会在每次迭代中重置。除非您特别询问如何解决跨版本兼容性问题(在这种情况下,您的问题显然应该描述该问题),否则您不应该混合使用and标记。我已经删除了这两个标签,以及其他一些完全虚假的标签。请不要垃圾邮件标签。
country = ["Denmark", "Croatia", "Britain", "Canada"]
#list initialized with nothing in it
d = []
for idx, val in enumerate(country):
    #list declaration here means we make a new copy of d every time we go through the loop
    d.append(idx)

#I moved the print outside the loop so we don't print on every iteration
print(d)
country = ["Denmark", "Croatia", "Britian", "Canada"]
d = []
for i,v in enumerate(country):
    d.append(v)


for i in range(0,4):
    print(country[i])