返回一个项目列表,其中没有任何相邻的元素具有相同的值

2024-04-24 11:32:08 发布

您现在位置:Python中文网/ 问答频道 /正文

实现函数unique_in_order,该函数以一个序列作为参数,并返回一个项目列表,其中没有任何元素彼此相邻且具有相同值,并保留元素的原始顺序

例如:

unique_in_order('AAAABBBCCDAABBB') == ['A', 'B', 'C', 'D', 'A', 'B']

unique_in_order('ABBCcAD')         == ['A', 'B', 'C', 'c', 'A', 'D']

unique_in_order([1,2,2,3,3])       == [1,2,3]

我的代码返回正确的输出:

def unique_in_order(iterable):
list = []
for i in range(0, len(iterable)):
    if iterable[i] != iterable[i-1]:
        list.append(iterable[i])
return list

通过测试,但尝试失败,说明:

应使用一个元素: []应等于['A']

应减少重复: []应等于['A']

我想知道我的代码有什么问题,谢谢


Tags: 项目函数代码in元素列表参数顺序
1条回答
网友
1楼 · 发布于 2024-04-24 11:32:08

使用现有库执行该任务,如itertools.groupby

import itertools

def unique_in_order(iterable):
    return [k for k,_ in itertools.groupby(iterable)]

print(unique_in_order('AAAABBBCCDAABBB')) # ['A', 'B', 'C', 'D', 'A', 'B']
print(unique_in_order(['A']))  # ['A']

使用默认的组键,groupby将相同的连续元素分组,生成具有值和值组的元组(我们在这里忽略了这一点,我们只需要键)

相关问题 更多 >