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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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 3.x 测试两个列表之间的连续字母_Python 3.x_List - Fatal编程技术网

Python 3.x 测试两个列表之间的连续字母

Python 3.x 测试两个列表之间的连续字母,python-3.x,list,Python 3.x,List,我一直在努力让这个逻辑正常工作,但简单地说,我有两个列表,包含他们自己的字符集。我应该让它在有连续字母的地方返回,虽然我自己看不到逻辑,但这是我到目前为止得到的 lst1=['k','u','h','m'] lst2=['k','u','h','n'] lst3=['s','y','u','u'] lst4=['p','y','u','u'] ns1='' ns2='' ns3='' ns4='' match1=0 match2=0 for x in range(0,len(lst1)-1):

我一直在努力让这个逻辑正常工作,但简单地说,我有两个列表,包含他们自己的字符集。我应该让它在有连续字母的地方返回,虽然我自己看不到逻辑,但这是我到目前为止得到的

lst1=['k','u','h','m']
lst2=['k','u','h','n']
lst3=['s','y','u','u']
lst4=['p','y','u','u']
ns1=''
ns2=''
ns3=''
ns4=''
match1=0
match2=0

for x in range(0,len(lst1)-1):
    ns1=ns1+lst1[x]
    ns2=ns2+lst2[x]
    if ns1 == ns2:
        match1=match1+1
    return match1

for y in range(0,len(lst3)-1):
    ns3=ns3+lst3[y]
    ns4=ns4+lst4[y]
    if ns3 == ns4:
        match2=match2+1
    return match2
在第一个for循环中,预期的输出是3个匹配,因为lst1和lst2之间有3个连续的字母,与lst3和lst4相同,但它应该从第二个索引开始

实际上,这确实有效,但在lst3和lst4的情况下,它将按预期返回match1作为3,但在match2的情况下,它将返回0。通常我可以用1而不是0开始程序,但是如果是随机生成的列表。我怎样才能达到正确的结果

在有两个列表的情况下:

lstx=['a','b','c','d']
lsty=['e','b','c','f']
例如,在这个示例中,预期输出应该是2,因为b和c在lstx和lsty之间是连续的


无论预期输出的最小值是2,因为只有当两个或多个字母并排并位于对应列表之间的同一位置时,字母才能被归类为连续字母,在条件失败后,它们中没有重置,因此它们可以检查其他值,因为从第一个索引中携带不匹配

此外,使用
zip()
同时迭代列表更容易,而不是使用索引和
range()
,应该避免使用索引和
range()
,这样您的主循环就会变成这样:

for x, y in zip(lst3, lst4):
ns3 = ns3 + x
ns4 = ns4 + y
if ns3 == ns4:
    match2 = match2 + 1
else:
    ns3 = ''
    ns4 = ''
在你的例子中,我看不到任何数字是连续的,这可以简化你的问题,在列表的同一索引中哪些字母是相同的,一个更简单的检查可以这样做

count = sum(x == y for x, y in zip(lstx, lsty))

这里zip()用于同时对两个列表进行计算,sum()可以对false和true的值求和,这一事实用于获得条件x==y为true的次数

i为了澄清您的问题,您能为您的示例提供预期的输出吗?非常感谢您的解释,这非常有帮助。我会尝试更多地练习使用这个函数,以确保我完全理解它。如果你需要澄清,我会询问任何事情,还有为什么需要连续部分?作业是一个列表检查,我有绝大多数程序,它接受一个句子作为字符串,拆分它,并在第二个句子字符串之间进行检查,每个字母都包含在各自的列表中,但作业的最后一部分是对具有类似元音的单词进行字符串比较,因此应检查顺序/连续字母是否正确