繁体   English   中英

结合while和for循环Python

[英]Combine while and for loop Python

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

这是循环开始:

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

如何有效地编码这一行?

要遍历一个序列并在不满足条件时终止循环,可以使用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)

使用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

您是否正在寻找根据这样的条件检查每个字符?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM