分析带有间隔的整数集的字符串以列出 [英] parse string of integer sets with intervals to list

查看:54
本文介绍了分析带有间隔的整数集的字符串以列出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有"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]

这篇关于分析带有间隔的整数集的字符串以列出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆