美文网首页
习题3:采取样例

习题3:采取样例

作者: 今年说话算话 | 来源:发表于2017-02-21 16:17 被阅读0次
    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]]
    

    相关文章

      网友评论

          本文标题:习题3:采取样例

          本文链接:https://www.haomeiwen.com/subject/qisuwttx.html