当前位置:首页 >> 编程语言 >> 【Python CheckiO 题解】Create Intervals,奔腾tt

【Python CheckiO 题解】Create Intervals,奔腾tt

0evadmin 编程语言 1
文件名:【Python CheckiO 题解】Create Intervals,奔腾tt 【Python CheckiO 题解】Create Intervals

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 i+1 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)], "First"assert create_intervals({1, 2, 3, 6, 7, 8, 4, 5}) == [(1, 8)], "Second"print('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 x+1 not in data)))
协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接