初学Python 遇到for in 循环疑问

天高地阔 2015-06-06 02:45:18
删除列表中重复元素

a=['a','b','c','d','e','a','a']
for i in range(len(a)):
for j in range(i+1,len(a)):
if (a[i]==a[j]):
del a[j]


在执行时如下出现错误:
if (a[i]==a[j]):
IndexError: list index out of range
通过debug 发现:当j=6时,出现 for 6 in range(1,6)情况,这句话本身不是有错误吗,应该停止执行,跳出循环。
为什么还会执行到下面语句if(a[i]==a[j]),导致列表溢出。
...全文
215 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Django_1 2015-06-09
  • 打赏
  • 举报
回复
abxialiang 2015-06-08
  • 打赏
  • 举报
回复
简单的办法: a=['a','b','c','d','e','a','a'] list_b=list(set(a)) print list_b
  • 打赏
  • 举报
回复
你这个前面删除元素,长度不够 循环执行下去自然会索引越界 尽量不要在循环体中删除正在遍历的列表元素 避开删除导致的索引越界问题
panghuhu250 2015-06-06
  • 打赏
  • 举报
回复
循环开始时range(i+1, len(a))的值就已定下来了, 是range(1, 7).

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧