items = [1, 1, 2, 4, 5, 6, 5]
for i, item in enumerate(items):
# don't compare last item to avoid going out of range
if i < len(items) - 1:
if item == items[i + 1]:
print 'duplicate found', item, items[i + 1]
这可以通过从循环中删除最后一项来进一步优化。这就避免了需要做if检查以确保我们不在最后一项上
items = [1, 1, 2, 4, 5, 6, 5]
for i, item in enumerate(items[:-1]):
if item == items[i + 1]:
print 'duplicate found', item, items[i + 1]
如果必须找到连续的重复值,我将使用
itertools.groupby
:另一种方法是压缩列表并比较相邻值:
您可以跟踪看到的最后一个值,并且仅当它与当前值相同时才附加到新列表:
您还可以使用
zip
和切片列表,在循环时查看前面的项目:等价的list comprehension:
请注意,如果重复项在一行中出现多次,则这两个项都会多次追加重复项
要找到相邻的重复项,您可以遍历项目列表并将当前项目与下一个项目进行比较
这可以通过从循环中删除最后一项来进一步优化。这就避免了需要做
if
检查以确保我们不在最后一项上相关问题 更多 >
编程相关推荐