马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
https://www.codewars.com/kata/54 ... 001667/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([1, 2, 2, 3, 3]) == [1, 2, 3]
unique_in_order((1, 2, 2, 3, 3)) == [1, 2, 3]
def unique_in_order(sequence):
seq2 = []
for item in sequence:
if item not in seq2:
seq2.append(item)
return seq2
???我的思路没错啊,如果没重复的话就append
标题:Codewars——Unique In Order
内容:
你的思路部分是对的,但你的实现只是简单地过滤掉了所有的重复项,而不是只过滤掉相邻的重复项。所以,你需要稍微调整你的代码以满足这个条件。下面是一个可能的解决方案:def unique_in_order(iterable): if len(iterable) == 0: return [] res = [iterable[0]] for item in iterable[1:]: if item != res[-1]: res.append(item) return res
让我们详细地解释一下这个解决方案。
首先,我们检查输入的迭代器是否为空。如果为空,那么我们直接返回一个空列表。
然后,我们创建一个列表 res ,并将 iterable 的第一个元素放入列表中。这是因为我们知道第一个元素总是唯一的。
接下来,我们遍历 iterable 中的其余元素。对于每个元素,我们检查它是否与 res 的最后一个元素相同。如果不同,那么我们就将其添加到 res 中。这就保证了我们只添加了那些不与前一个元素重复的元素。
最后,我们返回 res ,它是一个包含了 iterable 中所有非重复元素的列表。
这样,我们就实现了一个满足题目要求的 unique_in_order 函数。
希望这个解释对你有所帮助!如果你还有其他的问题,欢迎随时向我提问。
|