python - 将范围表达式更改为列表的 Pythonic 方法
问题描述
将典型的字符串范围表达式(例如将页面范围指定为打印机)转换为最 Pythonic 的方法是什么
'1-4,6'
'3,5-8,12-14'
进入列表
[1, 2, 3, 4, 6]
[3, 5, 6, 7, 8, 12, 13, 14]
这是一个脑筋急转弯,我知道如何使用字符串操作和循环以一种老套的方式做到这一点。
解决方案
您可以使用以下功能:
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]
推荐阅读
- python - Python 检查 json 中的键和值
- php - 仅针对特定类别重命名 WooCommerce 运输完整标签
- powershell - 使用 PowerShell 确定处理器架构的简单跨平台方法是什么?
- docker - 在编辑文件之前不会执行 crontab(使用 Dockerfile 设置 crontab)
- c - 为什么 isdigit() 在 C 中不能正常工作
- django - 如何使用 django 管理面板中的自定义管理字段重定向到自定义管理页面
- flutter - 我可以使用 bloc 存储应用程序数据吗
- go - 为 struct main 找到无效字段。文章的字段作者
- python - 是否可以对数组进行切片以倒退?
- angular - Angular 使用 ng-content 类不适用