如何有效地检查 for 循环中的字符是否位于字符串的最后位置?
喜欢:
string = "daffyduck'd"
我会通过
for char in string:
if char == string[-1]:
break
然而,只要存在与最后一个元素匹配的字符,这就会过早结束,因此这是行不通的。我正在处理成对的字符,所以当在 for 循环内时,我正在执行 current_index 和 current_index + 1 操作,因此在不知道最后一个元素的情况下,我将得到一个字符串索引超出范围的错误。
请您参考如下方法:
I am dealing with pairs of chars, so when inside a for loop, i am doing a current_index and current_index + 1 operation, so without knowing the last element, I will get a string index out of bound error.
如果你想做的只是一次处理两个相邻的字符,那么不要使用索引,只需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 将在每次迭代时给出当前索引和 iterable 中的实际项目。因此,您可以检查当前索引 + 1 是否等于字符串的长度,以确保您确实位于字符串的最后位置。
