python修炼——CodeWars!

最近研究了一下 CodeWars 这个网站,这是国外一个刷编程题的网站,质量很高,打算后面有>时间去这里面刷一下题,哪怕不会,看看大佬们是如何做题的也好。


今天做了一道题:unique in order

  • 题目
"""
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]

"""

大概意思是:

实现一个函数,该函数将序列作为参数并返回一个项列表,其中相邻的两个元素不能相同,而且不能打乱元素的原始顺序

  • 实现代码
def unique_in_order(iterable):
   pre_item = None
   result = []
   for item in iterable:
       if item != pre_item:  # 将得到的数值 item 与开始定义的变量 pre_item 进行判断
           result.append(item)  # 不相等则加入到列表中
           pre_item = item  # 重点:此时将该数值赋值给 pre_item,那么在下次判断时就是与上次的值进行判断,达到相邻去重的效果。
   return result

print(unique_in_order('AAAABBBCCDAABBB'))
print(unique_in_order('ABBCcAD'))
print(unique_in_order([1, 2, 2, 3, 3]))
print(unique_in_order([]))
  • 解决

这里写图片描述

这道题想了半天也没有做出来,最后参考了大佬们的代码实现了功能。

完整代码已经上传 GitHub

https://github.com/qyf1932125311/python_study.git

猜你喜欢

转载自blog.csdn.net/qyf__123/article/details/82291080