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

我有一个字符串,其中包含随机字母和数字,但是如果有两个相同或彼此相邻的字母或数字,则必须用"/"分隔它们。因此,输入字符串为"uBBjkko",结果应为"uB/Bjk/ko"

现在,我已经将字符串转换为列表,以便可以将每个元素与下一个元素进行比较:

mylist ['u','B','j','k','o']
for i in range(len(mylist)):
        if mylist[i] == mylist[i + 1]:
            mylist.insert(i + 1,"/")
print("".join(mylist))

,但是如果列表太长并且列表以两个相同的字母或数字结尾,例如

,则该代码将不起作用
['u','o','2','2']

然后输出将为"uB/Bjk/ko22",但必须为"uB/Bjk/ko2/2"

lynch123 回答:如何将列表中的元素与下一个元素进行比较,如果相同则分开吗?

所以正如我在评论中所说,问题是,您在迭代时插入。通过从头到尾迭代另一种方式,您可以对其进行修复。这样,您的迭代不受插入的影响:

mylist = ['u','B','j','k','o','2','2']
for i in range(len(mylist)-1,-1): # This goes from len(mylist)-1 to 0 in -1 steps
    if mylist[i] == mylist[i-1]:
        mylist.insert(i,'/')
print("".join(mylist))
,
from itertools import zip_longest

mylist = ['u','2']
print("".join([a + ('/' if a == b else '') for a,b in zip_longest(mylist,mylist[1:],fillvalue='')]))

尽管可能很多,但是您可以了解itertools模块。在这种情况下,zip函数或zip_longest函数也会列出列表。

本文链接:https://www.f2er.com/3144265.html

大家都在问