[英]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.