Das ist, was ich ohne eine Schleife erreicht habe, die hässlich ist. Ich bin sicher, dass dies mit einer Schleife durchgeführt werden kann, die sich wiederholende Aussagen ohne:Wie kann ich eine Schleife für diese if-Anweisungen erstellen?
def my_function(my_list_of_words):
_digits = re.compile('\d')
to_return = []
for i, p in enumerate(my_list_of_words):
new_list= []
if 'start' in p:
if bool(_digits.search(my_list_of_words[i+1])):
new_list.append(p)
new_list.append(my_list_of_words[i+1])
if bool(_digits.search(my_list_of_words[i+2])):
new_list.append(my_list_of_words[i+2])
if bool(_digits.search(my_list_of_words[i+3])):
new_list.append(my_list_of_words[i+3])
to_return.append(" ".join(new_list))
return to_return
Dies funktioniert gut, aber ich weiß nicht, wie viele Strings mit Zahlen wird es nach "start"
sein.
Ich möchte eine Schleife, die weiterhin nach Zahlen in der Liste der Zeichenfolgen sucht, bis der nächste Index keine Nummer hat.
Ich versuchte dies:
def my_function(my_list_of_words):
_digits = re.compile('\d')
to_return = []
for i, p in enumerate(my_list_of_words):
new_list= []
count = 1
if 'start' in p:
new_list.append(p)
while bool(_digits.search(my_list_of_words[i+count])):
new_list.append(my_list_of_words[i+count])
++count
to_return.append(" ".join(new_list))
return to_return
Das aus irgendeinem Grund nicht funktioniert, scheint es für immer Schleife. Ich habe auch versucht:
while True:
if bool(_digits.search(my_list_of_words[i+count])):
//doo things
++count
else:
break
Dies funktioniert nicht für mich auch, es Schleifen für immer.
Darstellung von dem, was ich versuche zu erreichen:
['foo','foo','foo','start', '23', 'a32bc', '43', '332', 'foo', 'start', '23', 'a32bc']
produzieren würde
['start 23 a32bc 43 332', 'start 23 a32bc']
Lasst uns sagen, dass wir die obige Liste haben, wenn wir 'start'
erreichen, ich, ob die nächste überprüfen möchten hat eine Nummer, in unserem Fall 23
, wenn ja, dann überprüfen Sie die nächste für die Nummer (enthält 32
so wieder wahr), so weiter, bis die nächste keine Nummer hat.
Wie kann ich dies mit einer Schleife erreichen?
Ich bin ziemlich sicher, '++ count' nichts tut, versuchen' count + = 1 'stattdessen. – MSeifert
Warum zählen Sie Ihre Einträge? Iterieren Sie einfach über sie und brechen Sie, wenn die Bedingung falsch ist. – MKesper
@MSeifert Sie haben recht, bewegen sich von Java zu Python und versuchen immer noch, sich an einige grundlegende Konzepte zu gewöhnen. Dank dafür. Außerdem verwende ich "Pythonanywhere" als Testumgebung, und in seinem Editor wurden weder Fehler noch Syntaxfehler angezeigt, was nicht hilfreich ist. –