我有一个字符串,其中包含随机字母和数字,但是如果有两个相同且相邻的字母或数字,则必须用 "/"
将它们分开。因此输入字符串为 "uBBjkko"
,结果应为 "uB/Bjk/ko"
。
现在我已将字符串转换为列表,以便我可以将每个元素与下一个元素进行比较:
mylist ['u', 'B', 'B', 'j', 'k', 'k', 'o']
for i in range(len(mylist)):
if mylist[i] == mylist[i + 1]:
mylist.insert(i + 1, "/")
print("".join(mylist))
但是如果列表太长并且列表以两个相同的字母或数字结尾,例如
['u', 'B', 'B', 'j', 'k', 'k', 'o', '2', '2']
那么输出将是“uB/Bjk/ko22”
,但它需要是“uB/Bjk/ko2/2”
。
最佳答案
正如我在评论中所说,问题是您在迭代时插入。通过从结束到开始以相反的方式迭代,您可以修复它。这样你的迭代就不会受到插入的影响:
mylist = ['u', 'B', 'B', 'j', 'k', 'k', 'o', '2', '2']
for i in range(len(mylist)-1, 0, -1): # This goes from len(mylist)-1 to 0 in -1 steps
if mylist[i] == mylist[i-1]:
mylist.insert(i, '/')
print("".join(mylist))
关于python - 如何将列表中的元素与下一个元素进行比较,如果相同则分开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58750386/