在手机上怎么做微电影网站,做网盘网站的成本,商城类网站模板,建立的网站百度搜索不到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 题目描述
【Create Intervals】给定一个由整数组成的字典找到连续的一串数字将这串连续的数字的第一个数和最后一个数组成一个元组最后返回多个元组组成的列表。
【链接】https://py.checkio.org/mission/create-intervals/
【输入】字典
【输出】两个整数组成的元组列表
【范例】
create_intervals({1, 2, 3, 4, 5, 7, 8, 12}) [(1, 5), (7, 8), (12, 12)]
create_intervals({1, 2, 3, 6, 7, 8, 4, 5}) [(1, 8)]解题思路
定义两个列表start 列表用于储存元组的第一个数字end 列表用于储存元组的第二个数字
对于 start 列表循环访问 data 字典遍历所有数字将数字减一如果没有在原字典中则表示这个数字是一个元组开头的数字
对于 end 列表循环访问 data 字典遍历所有数字将数字加一如果没有在原字典中则表示这个数字是一个元组结束的数字
最后使用 zip 方法将两个列表中对应的元素打包成一个个元组然后返回由这些元组组成的列表即可。
代码实现
def create_intervals(data):start, end [], []for i in data:if i-1 not in data:start.append(i)if i1 not in data: end.append(i)return list(zip(sorted(start), sorted(end)))if __name__ __main__:#These asserts using only for self-checking and not necessary for auto-testingassert create_intervals({1, 2, 3, 4, 5, 7, 8, 12}) [(1, 5), (7, 8), (12, 12)], Firstassert create_intervals({1, 2, 3, 6, 7, 8, 4, 5}) [(1, 8)], Secondprint(Almost done! The only thing left to do is to Check it!)大神解答 大神解答 NO.1 def create_intervals(data):left [x for x in data if x - 1 not in data]right [x for x in data if x 1 not in data]return list(zip(sorted(left), sorted(right)))大神解答 NO.2 def create_intervals(data):plus_one, minus_one [], []for d in sorted(data):if d - 1 not in data:minus_one.append(d)if d 1 not in data:plus_one.append(d)return list(zip(minus_one, plus_one))大神解答 NO.3 def create_intervals(data):return list(zip(sorted(x for x in data if x-1 not in data),sorted(x for x in data if x1 not in data)))