删除列表的元素,一定要倒序删除
因为后边的元素会自动的覆盖到上一个被删除的元素的位置上,如果此时for循环正向运行,正好会掠过这个往前移的元素,继续往下走。会造成遍历的遗漏
list01 = [3,45,8,12,36,7,3]
for item in list01:
if item %2:
list01.remove(item)
print(list01) #打印结果为[45,8,12,36,3],发现45和3都还在
修改如下
for i in range(len(list01)-1,-1,-1): #从后向前删
if list[i] % 2:
print(list01[i])
del list[i]
print(list01)
有些操作会产生新的字符串,额外占用空间
str_result = ' '
for i in range(10):
str_result += str(i) #每次执行+=操作都会产生新的字符串,尽量不使用+
优化
通过可变对象list保存所有要拼接的字符串,最后在将列表里的内容转为字符串
list_result = []
for i in range(10):
list_result.append(str(i))
str_result = ''.join(list_result)
print(str_result)