本文介绍了分析带有间隔的整数集的字符串以列出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有"2,5,7-9,12"字符串.
我想从中获取[2、5、7、8、9、12]列表.
I want to get [2, 5, 7, 8, 9, 12] list from it.
在python中是否有内置函数?
Is there any built-in function for it in python?
谢谢.
UPD..我想,直接的答案是否.无论如何,感谢您的摘录".由 Sven Marnach 建议.
UPD. I suppose, the straight answer is No. Anyway, thanks for your "snippets". Using one, suggested by Sven Marnach.
推荐答案此版本处理任意空格,重叠范围,无序范围和负整数:
This version handles arbitrary whitespace, overlapping ranges, out-of-order ranges, and negative integers:
from itertools import chain def group_to_range(group): group = ''.join(group.split()) sign, g = ('-', group[1:]) if group.startswith('-') else ('', group) r = g.split('-', 1) r[0] = sign + r[0] r = sorted(int(__) for __ in r) return range(r[0], 1 + r[-1]) def rangeexpand(txt): ranges = chain.from_iterable(group_to_range(__) for __ in txt.split(',')) return sorted(set(ranges)) >>> rangeexpand('-6,-3--1,3-5,7-11,14,15,17-20') [-6, -3, -2, -1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 17, 18, 19, 20] >>> rangeexpand('1-4,6,3-2, 11, 8 - 12,5,14-14') [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 14]更多推荐
分析带有间隔的整数集的字符串以列出
发布评论