我有这样的清单,里面有一个范围:
我想把它作为一个逗号单独的值,并扩展范围。
当我尝试使用for循环迭代列表中的项时,我没有得到想要的结果。
a = ['1','2','3-10','15-20']
b = []
for item in a:
if '-' in item:
print('The value of item is :' , item)
start = item.split('-')[0]
print('The value of start is :' , start)
end = item.split('-')[1]
print('The value of end is :' , end)
for i in range(int(start),int(end)):
b.append(i)
else:
b.append(item)
print('The value of b is : ', b)范围不包括最后一个元素。有什么更好的方法来处理这事吗?
发布于 2018-12-10 06:03:50
您可以使用嵌套列表理解:
a = ['1','2','3-10','15-20']
expanded = [list(range(int(i.split('-')[0]), int(i.split('-')[1])+1)) if '-' in i else [int(i)] for i in a]
flatten = ','.join(map(str, [i for sublist in expanded for i in sublist]))返回:
1,2,3,4,5,6,7,8,9,10,15,16,17,18,19,20发布于 2018-12-10 05:52:07
添加+1结尾,因为范围排除最后一个数字
a = ['1','2','3-10','15-20']
b = []
for item in a:
if '-' in item:
print('The value of item is :' , item)
start = item.split('-')[0]
print('The value of start is :' , start)
end = item.split('-')[1]
print('The value of end is :' , end)
for i in range(int(start),int(end)+1):
b.append(i)
else:
b.append(item)
print('The value of b is : ', b)如果解决了你的问题,请接受并勾选;)
https://stackoverflow.com/questions/53700143
复制相似问题