【问题标题】:Comparing 2 variables characters (Python)比较 2 个变量字符(Python)
【发布时间】:2018-09-05 15:09:00
【问题描述】:

我想比较 2 个字符串变量并返回 2 个字符串之间共享的字符数。因此,"work" 和 "what" 将返回“1/4”,因为 4 个字母中有 1 个(本例中只有 w)在 2 个字符串之间是相同的。

【问题讨论】:

  • 如果它们的长度不相等,你会返回什么?
  • 你已经写过代码了吗?即使它不起作用,也要发布它,以便我们可以从那里开始。
  • “相同字母的数量”是指,相同位置的相同字母?或者只是通常出现在两个单词中任何位置的字母?
  • 只是相同字母的数量和我列表中所有单词的长度相同,遗憾的是我知道编码是什么,我只对程序的其余部分进行编码

标签: python string


【解决方案1】:

这为您提供了在相同位置出现在两个单词中的字母数量:

sum(1 for a, b in zip(word1, word2) if a == b)

zip 同时为您提供两个单词中每个字符的迭代器,您只需将 1 相加即可。

这为您提供了任何位置的两个单词之间通常共享的字母:

len(set(word1) & set(word2))

这会创建两组字母,获取两组的交集,并告诉您该交集有多大。

【讨论】:

  • 或者只是:sum(a==b for a, b in zip(word1, word2))
  • ahhh okok ty 非常感谢您的帮助,看看这是否有效! :)
  • @schwobaseggl 可以说,是的,但我不喜欢隐式的布尔 → 整数转换...... :)
  • @deceze 当然,你的对于初学者来说更透明,并且将条件添加到生成器中,教了另一个方面:)
【解决方案2】:

你要这样的东西吗?

a = "hello"
print(list(a))

b = "hell"

counter=0
for x in list(a):
    if x in list(b):
    counter+=1

print(str(counter)+"/"+str(len(list(b))))

这是获取存储在变量 a 中的字符串,循环遍历字符并与存储在变量 b 中的字符串进行比较。最后;它打印 a 中也存在于 b 中的字符数超过存储在 b 中的字符串的长度。

【讨论】:

    【解决方案3】:

    您可能会考虑使用difflib,因为它似乎涵盖了您的用例,但也将其扩展到不同长度的字符串。

    示例 1

    import difflib
    
    sequence_matcher = difflib.SequenceMatcher(a='work', b='what')
    
    sequence_matcher.ratio() # 0.25
    

    示例 2

    import difflib
    
    sequence_matcher = difflib.SequenceMatcher(a='work', b='works')
    
    sequence_matcher.ratio() # 0.889
    

    【讨论】:

      猜你喜欢
      • 2016-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-21
      • 2019-11-10
      • 1970-01-01
      相关资源
      最近更新 更多