Python-为值和范围列表设置for或while循环

时间:2019-01-25 21:14:55

标签: python python-3.x

我是python的新手,很抱歉提出这个简单的问题。我有一组ID,也有一系列ID。我的ID看起来像这样,

IDs = [1,3:7,9,12:15]

我想要一个ID的for / while循环并打印ID,

例如:

for ID in IDs:
    print(ID)

我希望打印为:1,3,4,5,6,7,9,12,13,14,15。可能吗?在当前形式的ID和for循环中,它在3:4处引发语法错误。

谢谢!

2 个答案:

答案 0 :(得分:1)

您提供的输入不是有效的语法。我的答案假设您可以将输入内容修改为有意义的内容,例如[1, '3:7', 9, '12:15']

它不是防弹的,但我相信它将引导您朝正确的方向前进。

IDs = [1, '3:7', 9, '12:15']

output = []

for element in IDs:
    if isinstance(element, int):
        output.append(element)
    else:
        start, end = map(int, element.split(':'))
        output.extend(range(start, end + 1))

print(output)
# [1, 3, 4, 5, 6, 7, 9, 12, 13, 14, 15]

答案 1 :(得分:0)

使用当前输入值,由于语法上的错误,无法获得预期的结果。

IDs = ['1','3:7','9','12:15'] # strings of value
res=[]
for i in IDs:
    if ':' in i:
        temp=i.split(':')
        res.extend(list(range(int(temp[0]), int(temp[1]) + 1)))
    else:
        res.append(int(i))

print(res)

[1, 3, 4, 5, 6, 7, 9, 12, 13, 14, 15]