结合while和for循环Python

时间:2019-04-10 14:14:35

标签: python while-loop

我正在寻找一种高效的方式(也许我不知道),只要每个连续的字符都符合条件,就可以逐个字符地处理一个字符串。一旦不匹配,整个shebang都可以终止。

这是循环开始:

while (char == '-' or char == '+') for char in string:

如何有效编码此行?

3 个答案:

答案 0 :(得分:2)

要遍历序列并在不满足条件时终止循环,可以使用break

for char in string:
  if char not in ('-', '+'):
    break

  do_something_with(char)

但是,如果您只想收集符合条件的项目,则可能正在寻找itertools.takewhile

def find_sign_prefix(s):
  sign_prefix = list(itertools.takewhile(lambda char: char in ('-', '+'), s))
  return sign_prefix

print find_sign_prefix("--+-++---3.141592+-+")
# '--+-++---'

或者专门用于检查字符串的前缀,可以使用正则表达式:

def find_sign_prefix(s):
  # `[+-]*` means "a '+' or '-' character, zero or more times";
  # `re.search` only matches at the beginning of a string; 
  # group 0 is the matched substring
  return re.search([+-]*, s).group(0)

答案 1 :(得分:0)

使用while循环遍历每个字符,如果要查找的条件出现,则中断循环

string = '....'

for i in range(len(string)-1):

    char_i = string[i]
    char_i_1 = string[i+1]
    if not (char_i == '-' and char_i_1 == '+'):
        break

答案 2 :(得分:0)

您是否要根据这样的条件检查每个字符?

string = 'AB++-A+B-'
for char in string:
    if char == '+' or char == '-':
       # Do something
       print(char)