首页 > 解决方案 > 在列表中查找公共字符串并显示它们

问题描述

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

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

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

标签: pythonpython-3.xlistpython-requests

解决方案


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

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

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

  1. 如果字符iinA与字符iin相同B,则生成该字符

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

你如何i在某个字符串中找到第 th 个字符A看看 Python 的字符串方法。请记住:字符串是字符序列,因此 Python 字符串实现了几个特定于序列的操作

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

如果你知道如何迭代 的结果zip,你就会知道如何使用for循环。您所需要的只是一种迭代索引序列的方法。查看语言内置函数

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


推荐阅读