Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在列表中查找公共字符串并显示它们_Python_Python 3.x_List_Python Requests - Fatal编程技术网

Python 在列表中查找公共字符串并显示它们

Python 在列表中查找公共字符串并显示它们,python,python-3.x,list,python-requests,Python,Python 3.x,List,Python Requests,我试图创建一个函数compare(lst1,lst2),它比较列表中的每个元素,并返回新列表中的每个公共元素,并显示其公共性的百分比。列表中的所有元素都将是字符串。例如,函数应返回: lst1 = AAAAABBBBBCCCCCDDDD lst2 = ABCABCABCABCABCABCA common strand = AxxAxxxBxxxCxxCxxxx similarity = 25% 列表中不相似的部分将简单地返回为x。 如果没有pythonset和zip方法,我很难完成此函数。我不

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

lst1 = AAAAABBBBBCCCCCDDDD
lst2 = ABCABCABCABCABCABCA
common strand = AxxAxxxBxxxCxxCxxxx
similarity = 25%
列表中不相似的部分将简单地返回为x。 如果没有pythonsetzip方法,我很难完成此函数。我不允许在这个任务中使用它们,我必须使用while和for循环来实现这一点。请指导我如何做到这一点

如果没有pythonset和zip方法,我很难完成这个函数。我不允许在这个任务中使用它们,我必须使用while和for循环来实现这一点。请指导我如何做到这一点

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

假设
A
B
长度相等(字符数相同)。选择一些位置
i
(记住Python序列是0索引的)。您的问题陈述需要:

  • 如果
    A
    中的字符
    i
    B
    中的字符
    i
    相同,则生成该字符

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

  • 如何在某个字符串
    A
    中找到
    i
    th字符。请记住:字符串是字符序列,因此Python字符串还实现了几个

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

    如果您知道如何迭代
    zip
    的结果,那么您就知道如何对
    循环使用
    。您所需要的只是一种迭代索引序列的方法


    最后,对于你的相似性度量:如果你比较了
    n
    字符,发现
    n这就是我得出的结论

    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
    

    请共享您尝试过的代码。只需使用for循环对字符串进行迭代,并一次比较每个字符串(或列表)中的一个字符,同时计算有多少个字符是相同的,同时构建公共串。