python - 如何将列表中的元素与下一个元素进行比较,如果相同则分开?

标签 python list

我有一个字符串,其中包含随机字母和数字,但是如果有两个相同且相邻的字母或数字,则必须用 "/" 将它们分开。因此输入字符串为 "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/

相关文章:

python - 列表列表的总和和长度

python - Shell脚本在目录中查找文件,如何传入python脚本

python - 如何使用 Selenium 和 Python 禁用 Firefox 中的自动完成功能?

python - 列出 1 Dimensional Python Battleship 中的问题

java - 是否可以在一个网站上使用多种编程语言

Python:如何改造 python 列表并逐行打印?

Python。如何优化搜索功能

c# - 为什么List.Add即使存在对象也返回错误 'Object reference not set to an instance of an object'?

c# - 排序列表<List<MyType>>

python - 如何将时间序列数据中所有观测值的最新月份值替换为上个月值?