Python 计算字符串在其相反位置出现的次数

Python 计算字符串在其相反位置出现的次数,python,string,Python,String,我试图找出一种方法,你可以计算出一个字母出现在完全相反位置的次数。例如: word='ABXCEEVHBA'-->正确的输出给我3,因为A是第一个也是最后一个。B是倒数第二,倒数第二,依此类推 我已经找到了一个能给出正确结果的答案,但我想知道是否有一种更优雅的方法可以在没有模块的情况下做到这一点 word = 'ABXCEEVHBA' reverse = ''.join(reversed(word)) sum =0 for i in range(len(word)): if word[

我试图找出一种方法,你可以计算出一个字母出现在完全相反位置的次数。例如:

word='ABXCEEVHBA'-->正确的输出给我3,因为A是第一个也是最后一个。B是倒数第二,倒数第二,依此类推

我已经找到了一个能给出正确结果的答案,但我想知道是否有一种更优雅的方法可以在没有模块的情况下做到这一点

word = 'ABXCEEVHBA'
reverse = ''.join(reversed(word))

sum =0
for i in range(len(word)):
    if word[i]==reverse[i]:
        sum+=1

print(int(sum/2))


相信这会成功:

>>> count = 0
>>> for i in range(len(word)//2):  # meet half-way.
    if word[i] == word[~i]:
        count += 1

        
>>> count
3

您可以通过将字符串与字符串本身的倒数组合来使用zip:

sum(a==b for a,b in zip(word,reversed(word)))//2

print(sum(单词[i-1]==word[-i]表示范围(1,len(word)//2+1)内的i)
print(sum(c==word[-i]表示枚举中的i,c(单词[:len(word)//2,1)))
如果单词的字符数为奇数,则将中间的字符视为与其反向位置相匹配。此代码会做大量不必要的工作—只需迭代单词的前半部分,而且您根本不需要单词的反向副本。常见的主题是,您可以简单地比较字符串每一端的相应索引,并利用Python使用负索引从末尾开始计数的事实。巧妙的
~
方法,简洁的解决方案。很高兴您觉得它很有帮助。(~)是吗?试试看-~0==-1;~1==-2⋯