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