如何有效地检查for循环中的字符是否在字符串的最后位置?
像:
string = "daffyduck'd"
我会通过
完成此操作for char in string:
if char == string[-1]:
break
但是,只要有一个匹配最后一个元素的char,就会过早地结束,所以这不起作用。我正在处理字符对,所以当在for循环中时,我正在执行current_index和current_index + 1操作,所以在不知道最后一个元素的情况下,我将得到一个超出绑定错误的字符串索引。
答案 0 :(得分:6)
我正在处理chars对,所以当在for循环中时,我正在做一个current_index和current_index + 1操作,因此在不知道最后一个元素的情况下,我将得到一个超出绑定错误的字符串索引。
如果你想要做的就是一次处理两个相邻的字符,那么就不要使用索引,只需要zip
具有相同字符串的实际字符串,而不是第一个字符,就像这样
>>> input_string = "daffyduck'd"
>>> for char1, char2 in zip(input_string, input_string[1:]):
... print(char1, char2)
...
...
d a
a f
f f
f y
y d
d u
u c
c k
k '
' d
注意:您的原始方法也有问题,如果最后一个字符出现在字符串中间某处怎么办?这种情况会立即使循环中断
if char == string[-1]:
相反,使用enumerate
函数,就像这样
for index, char in enumerate(input_string):
if index + 1 == len(input_string):
break
enumerate
将在每次迭代时给出当前索引和迭代中的实际项。因此,您可以检查当前索引+ 1是否等于字符串的长度,以确保您确实位于字符串的最后位置。