我有以下两个字符串,它们有自己的起始坐标
string1='CADBDCXDCAXDDDAADXDADCC'
string2='AABCXXABACBBBDDXDCAAXB'
coordinate1=42
coordinate2=180
所以,string1
从42开始,而string2
从180开始。这些字符串仅由A
、B
、C
、D
和X
组成
要找到这些字符串之间的结束坐标,需要跳过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结构
您可以使用生成器表达式和
sum()
内置函数(即:请注意,在示例中使用
zip
意味着略长的第一个字符串在较短字符串的长度处被截断,因此结果不同(在示例代码中,第一个字符串的最后一个字符从不计数)。如果这不是一个bug,您可以将字符串缩短到两个长度中的最小值相关问题 更多 >
编程相关推荐