开发者

Python - Most efficient way to compare # of words sequenced in "right" order across two strings/lists

开发者 https://www.devze.com 2023-01-21 13:14 出处:网络
I was wondering what the most computationally efficient Python way of cracking this problem would be.

I was wondering what the most computationally efficient Python way of cracking this problem would be.

Say you have two strings (or lists from splitting those strings--doesn't matter), "this is the right string" vs. "this is right the string."

We're assuming that the first string is always right, an开发者_高级运维d a score will be assigned to the second string based on which words were sequenced in the right order. For the above two strings, we would assign a score of 0.6 (as only 3 of the 5 words are in the right position).

Best, Georgina


This sounds very much like homework. Try thinking about it for a bit. Would it suffice to traverse the list of correct words once, and check if the corresponding word in the second list is equal to the word in the correct list?

I would probably zip the lists in python and compare the pairs for equality.


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])


sum(f == s for f, s in zip(first, second)) / len(first)


Use ord() to convert each character to an integer value (its ordinal value), and then XOR each character together using the bitwise operator ^. If the characters are the same, the XOR operation will return 0 (zero), then use |= to bitwise OR the returned value with result and then save the result of the operation as result. If result is still zero after you iterate over all the characters, then the strings are equivalent.

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"
0

精彩评论

暂无评论...
验证码 换一张
取 消