Python—比较“按”排序的单词的最有效方法;对",;跨两个字符串/列表排序

Python—比较“按”排序的单词的最有效方法;对",;跨两个字符串/列表排序,python,string,list,comparison,sequence,Python,String,List,Comparison,Sequence,我想知道破解这个问题最有效的Python方法是什么 假设您有两个字符串(或拆分这些字符串的列表——没关系),“这是正确的字符串”与“这是正确的字符串” 我们假设第一个字符串总是正确的,并且根据单词按正确顺序排列的顺序为第二个字符串分配分数。对于以上两个字符串,我们的分数为0.6(因为5个单词中只有3个在正确的位置) 最好的, 乔治娜这听起来很像家庭作业。试着想一想。只需遍历一次正确的单词列表,并检查第二个列表中的对应单词是否等于正确列表中的单词就足够了吗 我可能会用python压缩列表并比较对是

我想知道破解这个问题最有效的Python方法是什么

假设您有两个字符串(或拆分这些字符串的列表——没关系),“这是正确的字符串”与“这是正确的字符串”

我们假设第一个字符串总是正确的,并且根据单词按正确顺序排列的顺序为第二个字符串分配分数。对于以上两个字符串,我们的分数为0.6(因为5个单词中只有3个在正确的位置)

最好的,
乔治娜这听起来很像家庭作业。试着想一想。只需遍历一次正确的单词列表,并检查第二个列表中的对应单词是否等于正确列表中的单词就足够了吗

我可能会用python压缩列表并比较对是否相等。

使用
ord()
将每个字符转换为整数值(其序号),然后使用位运算符将每个字符异或在一起。如果字符相同,异或操作将返回
0
(零),然后使用
|=
按位或返回值与
结果
,然后将操作结果保存为
结果
。如果迭代所有字符后,
result
仍然为零,则字符串是等效的

a = "this is the right string"
b = "this is right the string"

sum([1 for i,v in zip(a.split(), b.split()) if i == v])
a = "this is the right string"
b = "this is right the string"

result = 0
for x,y in zip(a,b):
    result |= ord(x) ^ ord(b)

(if result == 0): print "Equivalent"

你不需要理解列表there@SilentGhost:是的,谢谢,我应该开始做更多的事情:)@eumiro:我觉得变化很小,不是吗?除了帮助某人解决一个问题之外,并不意味着给他所有的答案,只要给他一些正确答案的提示就可以帮助他回答正确的问题。如果OP正在搜索“计算效率高”的代码,他可以检查itertools。但是如何懒洋洋地拆分字符串呢?在Python中,由于整数除法,2.x返回0。可能需要一些
float()
。@eumiro:根据输入可能返回1是,可能返回1。但是在OP的例子中,应该返回0.6,并且返回0。@eumiro:这完全是多余的。Accepter答案也不会返回0.6。很容易找到解决方案,但我正在寻找最快、计算效率最高的解决方案!
a = "this is the right string"
b = "this is right the string"

result = 0
for x,y in zip(a,b):
    result |= ord(x) ^ ord(b)

(if result == 0): print "Equivalent"