鱼C论坛

 找回密码
 立即注册
查看: 1680|回复: 3

[已解决]Codewars——Unique In Order

[复制链接]
发表于 2023-7-18 22:37:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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
最佳答案
2023-7-18 22:38:17
标题: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  函数。

希望这个解释对你有所帮助!如果你还有其他的问题,欢迎随时向我提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-18 22:38:17 | 显示全部楼层    本楼为最佳答案   
标题: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  函数。

希望这个解释对你有所帮助!如果你还有其他的问题,欢迎随时向我提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-18 22:41:34 | 显示全部楼层
Threebody1 发表于 2023-7-18 22:39
谢,下次直接问GPT

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-26 08:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表