【问题标题】:Finding common string in list and displaying them在列表中查找公共字符串并显示它们
【发布时间】:2021-03-16 16:49:15
【问题描述】:

我正在尝试创建一个函数 compare(lst1,lst2),它比较列表中的每个元素并返回新列表中的每个常见元素并显示它的常见百分比。列表中的所有元素都将是字符串。例如函数应该返回:

lst1 = AAAAABBBBBCCCCCDDDD
lst2 = ABCABCABCABCABCABCA
common strand = AxxAxxxBxxxCxxCxxxx
similarity = 25%

列表中不相似的部分将简单地返回为 x。 如果没有 python setzip 方法,我无法完成此功能。我不允许将它们用于此任务,我必须使用 while 和 for 循环来实现。请指导我如何实现这一目标。

【问题讨论】:

  • 请分享您尝试过的代码。

标签: python python-3.x list python-requests


【解决方案1】:

这是我想出来的。

lst1 = 'AAAAABBBBBCCCCCDDDD'
lst2 = 'ABCABCABCABCABCABCA'
common_strand = ''

score = 0
for i in range(len(lst1)):
    if lst1[i] == lst2[i]:
        common_strand = common_strand + str(lst1[i])
        score += 1
    else:
        common_strand = common_strand + 'x'

print('Common Strand: ', common_strand)
print('Similarity Score: ', score/len(lst1))

输出:

Common Strand:  AxxAxxxBxxxCxxCxxxx
Similarity Score:  0.2631578947368421

【讨论】:

    【解决方案2】:

    如果没有 python set 和 zip 方法,我无法完成此功能。我不允许将它们用于此任务,我必须使用 while 和 for 循环来实现。请指导我如何实现这一目标。

    您有两个字符串 AB。字符串是有序的字符序列。

    假设AB 的长度相同(字符数相同)。选择某个位置i < len(A), len(B)(请记住 Python 序列是 0 索引的)。您的问题陈述要求:

    1. 如果A 中的字符iB 中的字符i 相同,则生成该字符

    2. 否则,产生一些占位符来表示不匹配

    如何在某个字符串A 中找到ith 字符? Take a look at Python's string methods。请记住:字符串是字符的序列,因此 Python 字符串实现了几个sequence-specific operations

    如果是len(A) != len(B),您需要决定将任一字符串中的ith 元素与小于i 的字符串进行比较时要做什么。您可能会认为将它们表示为 (2) 中的相同占位符。

    如果你知道如何迭代zip 的结果,你就会知道如何使用for 循环。您所需要的只是一种迭代索引序列的方法。 Check out the language built-in functions.

    最后,对于您的相似度度量:如果您比较了n 字符并发现N <= n 不匹配,您可以将1 - (N / n) 定义为您的相似度度量。这适用于同样长的字符串(对于两个不同长度的字符串,您总是要计算相对于 longer 字符串的比例)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-20
      • 1970-01-01
      • 2021-02-14
      • 2012-03-11
      • 1970-01-01
      • 2015-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多