黑马程序员技术交流社区
标题:
for 循环遍历列表
[打印本页]
作者:
晓龙
时间:
2018-5-31 17:38
标题:
for 循环遍历列表
之前在调试课堂作业中的一道题时,发现了之前没有注意到的一点,在这里分享一下
总结: for遍历列表时,是遍历原始列表索引,并取对应值的,如果在循环体内部改变了列表的值,那根据原始列表的索引来查找新列表中的数据,就会导致有些数据遍历不到
下面举例说明 :
列表去重[2,3,4,5,4,3,5,6,7,8,9,0,9,8,7,6,5,1,2,3,4,9,0]; 去除重复的内容 :
下面是我用的方法:
num_list = [2, 3, 4, 5, 4, 3, 5, 6, 7, 8, 9, 0, 9, 8, 7, 6, 5, 1, 2, 3, 4, 9, 0]
# 这里复制一个相同的列表用于循环,即保证原有列表的值都可以依次遍历到
# 否则在循环体内部用remove方法改变原有删除原有列表的值,就不会
num_list_copy = num_list.copy()
for i in num_list_copy:
while True:
if num_list.count(i) > 1:
num_list.remove(i)
else:
break
print(num_list)
代码第一句,num_list_copy复制了原有列表,用于循环,
因为在循环体内部用remove方法去删除了num_list多余的值,这时如果再用num_list去循环,由于索引值是根据一开始的num_list生成的,所以有些数据是遍历不到的,结果就会有差别.
具体可把复制列表那句话注释,然后直接用num_list遍历,看结果如何,然后在一步步调试,即可发现其中差别
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2