Python 如何在循环中初始化列表,然后追加?

Python 如何在循环中初始化列表,然后追加?,python,list,loops,Python,List,Loops,是否可以在循环中初始化列表,并将对象附加到同一循环中的列表,而不必在初始化列表时始终清除列表 for j in range(5): mylist=[] mylist.append(j) 结果将是一个包含一个元素的列表,但我当然想要一个包含5个元素的列表。有什么好办法吗 我这样问是因为我需要初始化一个函数中的列表,并多次使用该函数,而不是每次使用该函数时都清除列表,而是附加新对象。你明白我的意思吗?目前我使用的是这样的东西: if first == True: mylist

是否可以在循环中初始化列表,并将对象附加到同一循环中的列表,而不必在初始化列表时始终清除列表

for j in range(5):    
  mylist=[]
  mylist.append(j)
结果将是一个包含一个元素的列表,但我当然想要一个包含5个元素的列表。有什么好办法吗

我这样问是因为我需要初始化一个函数中的列表,并多次使用该函数,而不是每次使用该函数时都清除列表,而是附加新对象。你明白我的意思吗?目前我使用的是这样的东西:

if first == True:
  mylist = []
  first = False

mylist.append("bla")
但它看起来不太好看。

提前感谢并为我的英语道歉:)

为什么不在循环/函数之前初始化列表

save_elem_internal_list = []
def save_elem(elem):
    save_elem_internal_list.append(elem)
如果要避免使用全局变量,可以将数据存储在函数本身中:

def save_elem(elem):
    if not hasattr(elem, 'store'):
        elem.store = []
    elem.store.append(elem)

这两种解决方案都比Christian的列表默认参数版本更明显,这对我来说太微妙了。根据我的经验,这只会导致以后的头痛。

您可以定义函数以接收默认参数:

输出:

[0]
[0, 1]
[0, 1, 2]
[0, 1, 2, 3]
[0, 1, 2, 3, 4]
这将起作用,因为

[0]
[0, 1]
[0, 1, 2]
[0, 1, 2, 3]
[0, 1, 2, 3, 4]