迭代列表时删除元素
list_1 = [1, 2, 3, 4]
list_2 = [1, 2, 3, 4]
list_3 = [1, 2, 3, 4]
list_4 = [1, 2, 3, 4]
for...var_name (这就是为什么 list_1 没有受到影响).
remove 会删除第一个匹配到的指定值, 而不是特定的索引, 如果找不到值则抛出ValueError 异常.
pop 则会删除指定索引处的元素并返回它..., 如果指定了无效的索引则抛出 IndexError 异常.
list_2/list_4为什么输出[2, 4]
列表迭代是按索引进行的, 所以当我们从list_2或list_4中删除1时, 列表的内容就变成了...类似的情况会交替发生在列表中的每个元素上.
list_3为什么会输出[]
这个好像比较符合我们的预期值,这里写法有些不一样,我们看一看下面代码
a = [1, 2, 3, 4]
print(id(a))...当我们默认参数为不可变对象时,与其他语言类似。但是如果默认参数为不可变对象时,每一次的变化就会被记住,这种问题非常严重,经常发生问题的时候我们找不到问题点。