Unique In Order
来源:互联网 发布:ubuntu卸载wine软件 编辑:程序博客网 时间:2024/06/04 20:13
https://www.codewars.com/kata/54e6533c92449cc251001667
问题描述
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]
解法
from itertools import groupbydef unique_in_order(iterable): return [key for key, value in groupby(iterable)]
题目的要求是将连续相同的字符或者数字取唯一,并不是要把字符串中只要出现两次以上的都取唯一。groupby函数的功能正好如何这个要求。
items = [1,2,3,1,2,3]from itertools import groupbyfor key, value in groupby(items): print(key, list(value), end=' ')# 1 [1] 2 [2] 3 [3] 1 [1] 2 [2] 3 [3]for key, value in groupby(sorted(items)): print(key, list(value), end=' ')# 1 [1, 1] 2 [2, 2] 3 [3, 3]
groupby函数只会将连续的相同的元素当做同一个分组,这一特点正好与题目要求符合。
def unique_in_order(iterable): result = [] prev = None for char in iterable[0:]: if char != prev: result.append(char) prev = char return result
def unique_in_order(iterable): res = [] for item in iterable: if len(res) == 0 or item != res[-1]: res.append(item) return resunique_in_order = lambda l: [z for i, z in enumerate(l) if i == 0 or l[i - 1] != z]
上面两个解法很相似,都是遍历整个list,当前元素和前一个不同则加入结果list中。
阅读全文
0 0
- Unique In Order
- In order to understandC++
- Process Order API In Order Management
- Pre-order,in-order, post-order of Tree Traversal
- 【Leetcode】Unique Paths in JAVA
- Unique Substrings in Wraparound String
- Unique Substrings in Wraparound String
- First Unique Number In Stream
- in short order 立即、马上
- Order Proposals in the Past
- Material Determination in Sales Order
- Magento Get Items In Order
- In order to understand C++
- important order in control vps
- Library order in static linking
- 二叉树pre-order,post-order,in-order,level-order遍历实现,及衍生问题
- Resolving unique constraint violations in PeopleSoft processes
- Find the first unique char in string
- 购买Vultr教程
- ccf 相邻数对
- 单点登录SSO的实现原理
- JavaSE
- 运算符
- Unique In Order
- C语言操作符
- 【Java】死锁
- Highcharts使用
- 图计算
- effective java(16) 之复合优先于继承
- 2017.10.13一试
- 你了解对象工厂的设计吗?带你一步一步的由浅入深的理解对象工厂
- sed(六)