习题3:采取样例

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):
    q = list(iterable)
    i = 1
    while i < len(q):
        if q[i-1] == q[i]:
            q.pop(i)
        else:
            i += 1
    return q

刚开始写的

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

有错误:用于迭代的序列只有一次初始机会。
论坛中其他大神的解答:

from itertools import groupby
def unique_in_order(iterable):
    return [x for x, _ in groupby(iterable)]
def unique_in_order(iterable):
    return [z for i, z in enumerate(iterable) if i == 0 or z != iterable[i-1]]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容