Threebody1 发表于 2023-7-18 22:37:42

Codewars——Unique In Order

https://www.codewars.com/kata/54e6533c92449cc251001667/train/python

Implement the function unique_in_order which takes as argument a sequence and returns a list of items without any elements with the same value next to each other and preserving the original order of elements.

For example:

unique_in_order('AAAABBBCCDAABBB') == ['A', 'B', 'C', 'D', 'A', 'B']
unique_in_order('ABBCcAD')         == ['A', 'B', 'C', 'c', 'A', 'D']
unique_in_order()   ==
unique_in_order((1, 2, 2, 3, 3))   ==


def unique_in_order(sequence):
    seq2 = []
    for item in sequence:
      if item not in seq2:
            seq2.append(item)
    return seq2

???我的思路没错啊,如果没重复的话就append

isdkz 发表于 2023-7-18 22:38:17

标题:Codewars——Unique In Order
内容:

你的思路部分是对的,但你的实现只是简单地过滤掉了所有的重复项,而不是只过滤掉相邻的重复项。所以,你需要稍微调整你的代码以满足这个条件。下面是一个可能的解决方案:

def unique_in_order(iterable):
    if len(iterable) == 0:
      return []
    res = ]
    for item in iterable:
      if item != res[-1]:
            res.append(item)
    return res


让我们详细地解释一下这个解决方案。

首先,我们检查输入的迭代器是否为空。如果为空,那么我们直接返回一个空列表。

然后,我们创建一个列表res ,并将iterable的第一个元素放入列表中。这是因为我们知道第一个元素总是唯一的。

接下来,我们遍历iterable中的其余元素。对于每个元素,我们检查它是否与res的最后一个元素相同。如果不同,那么我们就将其添加到res中。这就保证了我们只添加了那些不与前一个元素重复的元素。

最后,我们返回res ,它是一个包含了iterable中所有非重复元素的列表。

这样,我们就实现了一个满足题目要求的unique_in_order函数。

希望这个解释对你有所帮助!如果你还有其他的问题,欢迎随时向我提问。

Threebody1 发表于 2023-7-18 22:39:25

isdkz 发表于 2023-7-18 22:38
标题:Codewars——Unique In Order
内容:


谢,下次直接问GPT
def unique_in_order(sequence):
    seq2 = []
    last = None
    for item in sequence:
      if item != last:
            seq2.append(item)
      last = item
    return seq2

isdkz 发表于 2023-7-18 22:41:34

Threebody1 发表于 2023-7-18 22:39
谢,下次直接问GPT

{:10_256:}
页: [1]
查看完整版本: Codewars——Unique In Order