You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中两不等列表判断相等致变位词识别错误问题

为什么你的变位词判断代码会出错?

嘿,你遇到的问题其实是Python列表方法的一个小坑:list.sort()是原地排序的方法,它会直接修改原列表,但返回值是None。所以你代码里的判断条件s1.sort() == s2.sort(),本质上是在比较None == None,不管两个字符串实际是不是变位词,结果都会是True——这就是为什么明明listen和silena不是变位词,代码却判断为是的原因。

两种修正方案:

方案1:使用sorted()函数(推荐)

sorted()函数会返回一个新的排序后的列表,不会修改原字符串或列表,直接用它来比较就没问题:

string1 = 'listen'
string2 = 'silena'
if len(string1) != len(string2):
    print("Not an anagram")
else:
    if sorted(string1) == sorted(string2):
        print("it is an anagram")
    else:
        print("not an anagram")

方案2:先调用sort(),再比较列表本身

如果你一定要用list.sort(),那得先调用它完成排序,再直接比较两个列表:

string1 = 'listen'
string2 = 'silena'
s1 = list(string1)
s2 = list(string2)
if len(s1) != len(s2):
    print("Not an anagram")
else:
    s1.sort()
    s2.sort()
    if s1 == s2:
        print("it is an anagram")
    else:
        print("not an anagram")

小提醒

以后遇到Python的列表方法,要注意区分原地修改(返回None)和返回新对象的方法:比如sort()原地修改,sorted()返回新列表;append()原地修改返回None,而+拼接列表返回新列表。搞清楚这个就能避免很多类似的坑啦!

内容的提问来源于stack exchange,提问作者Dhruv Kapur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:58:56