如何在使用+1迭代的基本python中优化字符串比较?

2024-06-16 14:02:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下两个字符串,它们有自己的起始坐标

string1='CADBDCXDCAXDDDAADXDADCC'
string2='AABCXXABACBBBDDXDCAAXB'
coordinate1=42
coordinate2=180

所以,string1从42开始,而string2从180开始。这些字符串仅由ABCDX组成

要找到这些字符串之间的结束坐标,需要跳过X字符。这是我的实现,它是通过每个字符的for循环,如果字符不是X,则以1进行迭代

def convert_coordinates(first_str, second_str, index1, index2):
    x = index1
    y = index2
    for char1, char2 in zip(first_str, second_str):
        if char1!='X':
            x+=1
        if char2!='X':
            y+=1
    return [x, y]

运行时,输出以下内容:

convert_coordinates(string1, string2, coordinate1, coordinate2)
[61, 198]

我的问题是,这种迭代方式感觉像是旧的C代码,我正在用Python实现它。因此,我怀疑这与其他数据结构相比是非常缓慢的。是否有可能以某种方式优化它,可能使用NumPy?我想摆脱基本的python结构


Tags: 字符串convertfor字符firstsecondstrcoordinates
1条回答
网友
1楼 · 发布于 2024-06-16 14:02:59

您可以使用生成器表达式和sum()内置函数(即:

>>> sum(1 for c in string1 if c != "X")
20

请注意,在示例中使用zip意味着略长的第一个字符串在较短字符串的长度处被截断,因此结果不同(在示例代码中,第一个字符串的最后一个字符从不计数)。如果这不是一个bug,您可以将字符串缩短到两个长度中的最小值

相关问题 更多 >