技术需求:从给定列表筛选含1、2、3的数字并按升序输出
筛选包含1、2、3的数字并升序排列的解决方案
嘿,这个问题我来帮你搞定!要从数字列表里挑出同时包含1、2、3(不管顺序)的数字,再按升序排列,其实分两步走就很清晰:
核心思路
- 筛选判断:对每个数字,检查它的字符形式是否同时包含'1'、'2'、'3'这三个数字——把数字转成字符串再转成集合,用集合的子集判断是最简洁高效的方式。
- 排序输出:把筛选后的数字按升序排列,最后按要求的格式输出。
代码实现(Python为例)
# 示例输入的数字列表 input_numbers = [876321, 3245, 123] # 定义必须包含的数字集合 required_digits = {'1', '2', '3'} # 筛选符合条件的数字:检查required_digits是否是数字字符串集合的子集 filtered = [num for num in input_numbers if required_digits.issubset(set(str(num)))] # 升序排序 sorted_result = sorted(filtered) # 按示例格式输出(用顿号分隔) print('、'.join(map(str, sorted_result)))
代码解释
- 把数字转成字符串再转成集合,能快速做成员判断,
issubset()方法会直接返回True如果三个目标数字都存在。 - 列表推导式一行完成筛选,简洁明了,可读性拉满。
sorted()函数默认就是升序排序,不需要额外参数,省心省力。- 最后用
join()把排序后的数字转成字符串并连接,输出完全符合示例的格式。
示例验证
针对你给出的示例输入876321、3245、123:
- 3245的字符集合是{'3','2','4','5'},缺少'1',直接被排除;
- 123和876321都包含全部三个数字,排序后得到
123、876321,和示例输出完全一致。
内容的提问来源于stack exchange,提问作者sacrishi
相关产品推荐
相关产品推荐

