首页 > 解决方案 > 将范围表达式更改为列表的 Pythonic 方法

问题描述

将典型的字符串范围表达式(例如将页面范围指定为打印机)转换为最 Pythonic 的方法是什么

'1-4,6'
'3,5-8,12-14'

进入列表

[1, 2, 3, 4, 6]
[3, 5, 6, 7, 8, 12, 13, 14]

这是一个脑筋急转弯,我知道如何使用字符串操作和循环以一种老套的方式做到这一点。

标签: python

解决方案


您可以使用以下功能:

def dashrange(s):
    if "-" in s:
        a, b = map(int, s.split("-"))
        return range(a, b + 1)
    return [int(s)]

def range_to_list(s):
    return [j for i in s.split(",") for j in dashrange(i)]

印刷:

[1, 2, 3, 4, 6]

推荐阅读