asp mysql做网站,如何在电脑登录wordpress,温州做阀门网站公司,营销软文是什么CheckiO 是面向初学者和高级程序员的编码游戏#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务#xff0c;从而提高你的编码技能#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码#xff0c;同时也学习学习其他大神写的代码。
Chec…
CheckiO 是面向初学者和高级程序员的编码游戏使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务从而提高你的编码技能本博客主要记录自己用 Python 在闯关时的做题思路和实现代码同时也学习学习其他大神写的代码。
CheckiO 官网https://checkio.org/
我的 CheckiO 主页https://py.checkio.org/user/TRHX/
CheckiO 题解系列专栏https://itrhx.blog.csdn.net/category_9536424.html
CheckiO 所有题解源代码https://github.com/TRHX/Python-CheckiO-Exercise 题目描述
【Sort Array by Element Frequency】对给定的可迭代对象按照它们在列表中出现的次数进行排序如果两个元素出现的次数相同则按照元素在原来列表出现的先后顺序进行排序。
【链接】https://py.checkio.org/mission/sort-array-by-element-frequency/
【输入】可迭代的列表
【输出】排序后的列表
【前提】元素可以是 int 或 string 类型
【范例】
frequency_sort([4, 6, 2, 2, 6, 4, 4, 4]) [4, 4, 4, 4, 6, 6, 2, 2]
frequency_sort([bob, bob, carl, alex, bob]) [bob, bob, bob, carl, alex]解题思路
利用 collections 模块的 Counter() 方法统计元素的出现次数将元素作为 key出现次数作为 value以字典的键值对形式存储调用 most_common() 方法将其按照出现次数进行排序
排序过后是一个列表列表内元素为元组的形式遍历该列表将元素乘以其出现的次数依次添加到一个新的列表当中这个新列表就是排序过后的列表
代码实现
from collections import Counterdef frequency_sort(items):items2 []items Counter(items).most_common()for i in items:items2.extend([i[0]] * i[1])return items2if __name__ __main__:print(Example:)print(frequency_sort([4, 6, 2, 2, 6, 4, 4, 4]))# These asserts are used for self-checking and not for an auto-testingassert list(frequency_sort([4, 6, 2, 2, 6, 4, 4, 4])) [4, 4, 4, 4, 6, 6, 2, 2]assert list(frequency_sort([bob, bob, carl, alex, bob])) [bob, bob, bob, carl, alex]assert list(frequency_sort([17, 99, 42])) [17, 99, 42]assert list(frequency_sort([])) []assert list(frequency_sort([1])) [1]print(Coding complete? Click Check to earn cool rewards!)大神解答 大神解答 NO.1 def frequency_sort(items):return sorted(items, keylambda x: (-items.count(x), items.index(x)))大神解答 NO.2 from collections import Counter
from itertools import repeatdef frequency_sort(items):return [x for y in (repeat(*x) for x in Counter(items).most_common()) for x in y]