Python如何使用for循环反向遍历列表检查元素重复
反向遍历列表检查前置重复单词实现方案
你现有写法的问题是直接遍历列表元素拿不到当前元素的索引,没法圈定「当前位置之前的元素」这个遍历范围,需要先调整外层循环拿到索引,再通过切片实现反向遍历前置元素。
完整实现代码
mystring = "My name is Rohit Kaushik. Rohit loves to play cricket" mylist = mystring.split(' ') for idx, current_word in enumerate(mylist): # 内层循环反向遍历当前索引之前的所有元素 for check_word in mylist[:idx][::-1]: if check_word == current_word: print(f"检测到重复单词:{current_word},在位置{idx}处重复出现") # 找到重复后直接终止内层循环 break
逻辑说明
- 外层循环用
enumerate()包裹列表,遍历时同时拿到当前元素的索引idx和元素值current_word,解决纯值遍历无法定位位置的问题 - 内层遍历对象
mylist[:idx][::-1]分两部分生效:mylist[:idx]是切片操作,取列表从开头到当前索引前一位的所有元素,也就是当前单词之前出现过的所有内容- 后缀
[::-1]是Python序列的反向语法,设置步长为-1,让遍历从离当前位置最近的前置元素开始,往列表头部方向走
- 匹配到重复单词后直接用
break终止内层循环,不需要继续往前遍历
对应场景验证
拆分后的mylist索引从0开始计数:
0:My、1:name、2:is、3:Rohit、4:Kaushik.、5:Rohit
当外层遍历到索引5的Rohit时,内层反向遍历的前置片段是['Kaushik.', 'Rohit', 'is', 'name', 'My'],遍历到第二个元素就会匹配到Rohit,触发break终止循环,完全符合需求。
内容的提问来源于stack exchange,提问作者Rohit Kaushik
相关产品推荐
相关产品推荐

