使用字符串时跳过 for 循环中的迭代(在 Python 中)
Skipping iterations in a for loop when working with strings (in Python)
我正在尝试编写一个使用字符串作为输入(句子或单词)的程序。使用 for 循环,我依次遍历每个字符。当我遇到字母 p 时,程序应该跳过几次迭代。我发现了很多关于在处理整数时跳过迭代的技巧。但是,在我的代码中,我使用的是字符串。有人对此有任何有用的提示吗?提前致谢!
这是我的代码的一段改编(我目前拥有的):
language_input = input()
for character in language_input:
if character == "p":
# Now, I have to skip a few iterations (e.g. skip 3 characters)
您可以使用一个额外的变量,如果已设置则什么也不做
language_input = input()
check = 0
for character in language_input:
if check:
check -= 1
continue
if character == "p":
check = 3 #set to number of iterations you want to skip
这取决于您需要如何处理字符串中的字符。这是一个想法:
language_input = input()
i = 0
while i < len(language_input):
if language_input[i] == 'p':
i += 3
else:
i += 1
# do something else
您可以使用迭代器:
language_input = 'abcdefghij'
s = iter(language_input)
while True:
try:
character = next(s)
if character == 'd':
print('…', end='')
next(s)
next(s)
next(s)
print(character, end='')
except StopIteration:
break
输出:abc…dhij
为了更有效地跳过许多项目,您可以使用 itertools.islice
:
from itertools import islice
# … only showing changed part of code
if character == 'd':
print('…', end='')
list(islice(s, 3)) # get 3 elements at once
# …
我正在尝试编写一个使用字符串作为输入(句子或单词)的程序。使用 for 循环,我依次遍历每个字符。当我遇到字母 p 时,程序应该跳过几次迭代。我发现了很多关于在处理整数时跳过迭代的技巧。但是,在我的代码中,我使用的是字符串。有人对此有任何有用的提示吗?提前致谢!
这是我的代码的一段改编(我目前拥有的):
language_input = input()
for character in language_input:
if character == "p":
# Now, I have to skip a few iterations (e.g. skip 3 characters)
您可以使用一个额外的变量,如果已设置则什么也不做
language_input = input()
check = 0
for character in language_input:
if check:
check -= 1
continue
if character == "p":
check = 3 #set to number of iterations you want to skip
这取决于您需要如何处理字符串中的字符。这是一个想法:
language_input = input()
i = 0
while i < len(language_input):
if language_input[i] == 'p':
i += 3
else:
i += 1
# do something else
您可以使用迭代器:
language_input = 'abcdefghij'
s = iter(language_input)
while True:
try:
character = next(s)
if character == 'd':
print('…', end='')
next(s)
next(s)
next(s)
print(character, end='')
except StopIteration:
break
输出:abc…dhij
为了更有效地跳过许多项目,您可以使用 itertools.islice
:
from itertools import islice
# … only showing changed part of code
if character == 'd':
print('…', end='')
list(islice(s, 3)) # get 3 elements at once
# …