gpt4 book ai didi

python - 两个列表中匹配元素的数量

转载 作者:太空宇宙 更新时间:2023-11-04 10:35:04 27 4
gpt4 key购买 nike

我有很多套 2 弦。我正在尝试确定这两个字符串中匹配元素的数量。规则是如果字符串共享一个共同的字母,那就是一个点,顺序很重要,但第一个字符串中的每个字母只能匹配第二个字符串中的一个字母。所以在字符串'aaaab', 'acccc'中,只有1分被授予,因为只有一个'a' 匹配第二个字符串。下面是几个例子:

aaabb  bbaaa  5
aabbb bbbaa 5
aaabb aabbb 4
aaabb ccaaa 3
aaaaa bbbbb 0
ababa babab 4
aabcc babaf 3
abcde abfgh 2
bacde abdgh 3

希望了解它的工作原理。

这是我能想出的最有效的代码,但它非常复杂。我希望有人能想出更好的办法。

def Score(guess, solution):
guess = list(guess)
solution = list(solution)
c = 0
for g in guess:
if g in solution and g != "_":
c += 1
solution[solution.index(g)] = "_"
return c

当然这不是最好的方法,但我还没有想出其他办法。我尝试使用 Counter 创建算法并执行 guess&solution,这很有效,但最终速度变慢了。有人有什么想法吗?

最佳答案

只需使用 remove() 即可获得约 10%* 的速度提升list的方法|而不是使用 index() 进行查找.

此外,您不需要复制 guess进入 list .

def Score(guess, solution):
solution = list(solution)
c = 0
for g in guess:
if g in solution:
c += 1
solution.remove(g)

return c

*至少这是我在我的机器上测得的

关于python - 两个列表中匹配元素的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23830718/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com