我有一个函数,它接受一个格式为'1,3-5,7,19'的字符串,并将输出列表[1, 3, 4, 5, 7, 19]
。在
然而,我在想,也许这对嵌套列表理解足够简单。在
我最初的职能是:
result = []
for x in row_range.split(','):
if '-' in x:
for y in range(int(x.split('-')[0]), int(x.split('-')[1]) + 1)):
result.append(y)
else:
result.append(int(x))
我想理解应该是:
^{pr2}$甚至是
result = [y for x in row_range.split(',') if '-' in x for y in range(int(x.split('-')[0]), int(x.split('-')[1] + 1) else int(x)]
但这些都是语法错误。把if/else移到理解的前面
result = [y if '-' in x else int(x) for x in row_range.split(',') for y in range(int(x.split('-')[0]), int(x.split('-')[1]) + 1)]
导致索引器错误:列表索引超出范围。在
这可能吗?我已经有了一个可以很好地处理它的函数,并且更具可读性,但是我只是好奇这是否可以用python实现。在
您可以定义一个小的helper函数:
现在,使用带有嵌套循环的列表理解。在
^{pr2}$具有
re.sub()
函数的替代解决方案:输出:
^{pr2}$相关问题 更多 >
编程相关推荐