python返回等于字符串实际上不相等的位置?

mjc*_*mjc 0 python

我有两个字符串,就像s1='fly,dream';s2='dream,fly' 我想要s1等于s2.

我试过的代码是:

def Isequal(m,n):
    s1=m.split(',')    s2=n.split(',')   s1.sort()   s2.sort()
    if s1 == s2:
        print 'Equal'
    else:
        print s1,s2
Run Code Online (Sandbox Code Playgroud)

注意:s1可能等于s2.然后

def Isequal(m,n):
s1=m.split(',')
s2=n.split(',')
if s1 == s2.reverse() || s1 == s2:
print 'Equal'
else:
print s1,s2
Run Code Online (Sandbox Code Playgroud)

这段代码对吗?我有什么需要改进的吗?

Suk*_*lra 5

你的代码将两个字符串拆分,(返回一个list)并调用该sort方法list.由于两个子字符串相同,因此对子字符串列表进行排序会产生相同的列表.知道发生了什么的最好方法是打印出来的东西.查看结果.

>>> s1 = 'fly,dream'
>>> s2 = 'dream,fly'
>>> s1 = s1.split(',')
>>> s1
['fly', 'dream']
>>> s2 = s2.split(',')
>>> s2
['dream', 'fly']
>>> s1.sort()
>>> s1
['dream', 'fly']
>>> s2.sort()
>>> s2
['dream', 'fly']
>>> s1 == s2
True
Run Code Online (Sandbox Code Playgroud)

如果要检查两个字符串是否包含相同的子字符串,请使用sets,如下所示:

>>> varOne = set(s1.split(','))
>>> varTwo = set(s2.split(','))
>>> varOne == varTwo
True
Run Code Online (Sandbox Code Playgroud)

当心,设置只允许独特的项目,所以fly,dream,flydream,dream,fly将导致True这里.