簡體   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