如何在python中通过列表理解查找字符串中缺少的数字
这个问题是在面试中被问及如何将字符串转换成整数如何在python中通过列表理解查找字符串中缺少的数字,python,Python,这个问题是在面试中被问及如何将字符串转换成整数 str='1,3,5,8,...,12,15,17,...,21,22' 目标是查找字符串中缺少的数字 输出应该是如下所示的字符串 '1,2,3,8,9,10,11,12,15,17,18,19,20,21,11' 我用了很长的代码 s='1,3,5,8,...,12,15,17,...,21,22' s_list = s.split(',') new_list=[] t=0 for ch in s_list: if ch.isdigi
str='1,3,5,8,...,12,15,17,...,21,22'
目标是查找字符串中缺少的数字
输出应该是如下所示的字符串
'1,2,3,8,9,10,11,12,15,17,18,19,20,21,11'
我用了很长的代码
s='1,3,5,8,...,12,15,17,...,21,22'
s_list = s.split(',')
new_list=[]
t=0
for ch in s_list:
if ch.isdigit():
t=int(ch)
new_list.append(ch)
else:
for i in range(1,len(ch)+1):
t+=1
new_list.append(str(t))
print ",".join(new_list)
但是
需要优化的解决方案,使用列表理解
str = '1,2,3'
int_list = [int(x) for x in str.split(',')]
通过首先拆分str
并通过int(x)
将每个单独的项目/片段转换为int
,这将为您提供一个整数列表
我想这是不言自明的,但是如果你有什么疑问,只要在评论部分提问,我会尽力解释。祝你过得愉快
所使用的方法称为
编辑(在整数列表中查找缺少的值):
因为这个答案可能不适用,而且这个问题暂时搁置,如果有人发现这个问题,我会更深入地讨论这个问题。如果要查找新创建的基于
int
的列表中缺少的数字,可以执行以下操作:
str = '1,2,5'
int_list = [int(x) for x in str.split(',')]
missing_values = []
for i in range(0, max(int_list)):
if not i in int_list:
missing_values.append(i)
print('Missing values are:', missing_values)
int_list = int_list + missing_values
int_list.sort()
可能是或者不是你想要的,但我有预感这就是你真正想要的
编辑2(合并两个列表并将整数列表转换为字符串):
通过下面的评论部分,在这张照片上进一步旋转兔子洞。
假设您希望将缺少的值插入到原始字符串中,则可以执行以下操作:
str = '1,2,5'
int_list = [int(x) for x in str.split(',')]
missing_values = []
for i in range(0, max(int_list)):
if not i in int_list:
missing_values.append(i)
print('Missing values are:', missing_values)
int_list = int_list + missing_values
int_list.sort()
最后,您可能希望将其转换回字符串?
别紧张
str = ','.join(int_list)
那么你的解决方案是什么,你能分享这些代码吗?而且输出没有多大意义;5
去了哪里,2
从哪里来,最后的11
是什么?预期输出中的额外引号有什么作用?如果您执行str='、'+str
并定义result=[]
,您可以执行[result.extend([int(element[1])If element[1].isnumeric()else range(int(element[0])列表中元素的范围(int(element[0])+1,int(element[2]))[:-1]]
。当然,这是不可读的,没有一个头脑清醒的人会这样做。事实上,我不认为这是OP所要求的。坦率地说,我一点也不确定OP想要什么。@MartijnPieters只是注意到标题变了,问题变得完全不同。也许我应该删除我的答案吗?我认为OP希望…
被适合这个差距的数字所取代。@Matthias有趣的是,你可以将OP的问题演变成一个永无止境的答案,但只要评论在这里增加,我就会继续添加,因为我不想被投票遗忘。@Torxed:除非在前5分钟内编辑,否则问题不会改变。只更新了标题。