我正在尝试为我的程序添加一个选项,允许用户选择他想要执行的程序的哪些步骤.
我希望能够解析一个像"1-3,6,8-10"和得到 的字符串[1, 2, 3, 6, 8, 9, 10].
你知道Python中的某些内容是否存在吗?
这个功能可以满足您的要求.它假设没有使用负数,否则需要一些更改来支持这种情况.
def mixrange(s):
r = []
for i in s.split(','):
if '-' not in i:
r.append(int(i))
else:
l,h = map(int, i.split('-'))
r+= range(l,h+1)
return r
print mixrange('1-3,6,8-10')
Run Code Online (Sandbox Code Playgroud)
使用列表推导式的一种方法:
s = "1-3,6,8-10"
x = [ss.split('-') for ss in s.split(',')]
x = [range(int(i[0]),int(i[1])+1) if len(i) == 2 else i for i in x]
print([int(item) for sublist in x for item in sublist])
Run Code Online (Sandbox Code Playgroud)
输出:
[1, 2, 3, 6, 8, 9, 10]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3006 次 |
| 最近记录: |