Heim  >  Artikel  >  Backend-Entwicklung  >  6 Beispiele, 8 Codeausschnitte, ausführliche Erklärung der For-Schleife in Python

6 Beispiele, 8 Codeausschnitte, ausführliche Erklärung der For-Schleife in Python

PHPz
PHPznach vorne
2023-04-11 19:43:172555Durchsuche

Python unterstützt For-Schleifen und seine Syntax unterscheidet sich geringfügig von anderen Sprachen (wie JavaScript oder Java). Der folgende Codeblock zeigt, wie Sie eine for-Schleife in Python verwenden, um die Elemente in einer Liste zu durchlaufen:

Der obige Codeausschnitt gibt drei Buchstaben in separaten Zeilen aus. Sie können die Ausgabe auf dieselbe Zeile beschränken, indem Sie nach der Druckanweisung ein Komma „“ hinzufügen (wenn viele zu druckende Zeichen angegeben sind, wird sie „zeilenumbrochen“). Der Code lautet wie folgt:

Wann Sie möchten: Die obige Codeform kann verwendet werden, wenn Inhalte aus Text in einer Zeile statt in mehreren Zeilen angezeigt werden. Python bietet auch die integrierte Funktion reversed(), die die Richtung der Schleife umkehren kann, zum Beispiel:

Beachten Sie, dass dies nur umgekehrt werden kann, wenn die Größe des Objekts bestimmt oder das Objekt implementiert wird Die Methode _reversed_() ist gültig.

01 Eine for-Schleife mit tryexclusive

StringToNums.py in Listing 1 veranschaulicht, wie eine Menge von aus Strings konvertierten Ganzzahlen summiert wird.

  • Listing 1 StringToNums.py
<ol><pre class="brush:sql;toolbar:false;">line = '1 2 3 4 10e abc' 
sum  = 0 
invalidStr = "" 
print('String of numbers:',line) 
for str in line.split(" "): 
  try: 
    sum = sum + eval(str) 
  except: 
    invalidStr = invalidStr + str + ' ' 
print('sum:', sum) 
if(invalidStr != ""): 
  print('Invalid strings:',invalidStr) 
else: 
  print('All substrings are valid numbers') 

Listing 1 initialisiert zunächst die Variablen line, sum und invalidStr und zeigt dann den Inhalt von line an. Als nächstes wird der Inhalt der Zeile in Wörter unterteilt, und dann werden die Werte der Wörter über den Try-Codeblock nacheinander in der Variablensumme akkumuliert. Tritt eine Ausnahme auf, wird der Inhalt des aktuellen str an die Variable invalidStr angehängt.

Wenn die Schleifenausführung endet, gibt Listing 1 die Summe der numerischen Wörter aus und zeigt die nicht numerischen Wörter danach an. Die Ausgabe sieht folgendermaßen aus:

02 Exponentielle Operationen

Nth_exponet.py in Listing 2 zeigt, wie die Potenz einer Menge von ganzen Zahlen berechnet wird.

  • Listing 2 Nth_exponet.py
<ol><pre class="brush:sql;toolbar:false;">maxPower = 4 
maxCount = 4 
def pwr(num): 
  prod = 1 
  for n in range(1,maxPower+1): 
    prod = prod*num 
    print(num,'to the power',n, 'equals',prod) 
  print('-----------') 
for num in range(1,maxCount+1): 
    pwr(num) 

Listing 2 hat eine pwr()-Funktion, deren Parameter ein numerischer Wert ist. Die Schleife in dieser Funktion kann den Parameter hoch 1 bis n ausdrucken. Der Wert von n reicht von 1 bis maxCount+1.

Der zweite Teil des Codes ruft die Funktion pwr() von 1 bis maxCount+1 über eine for-Schleife auf. Die Ausgabe sieht so aus:

03 Verschachtelte Schleifen

Listing 3 von Triangular1.py zeigt, wie eine Zeile aufeinanderfolgender Ganzzahlen (beginnend bei 1) gedruckt wird, wobei jede Zeile länger als die vorherige Zeile 1 ist.

  • Listing 3 Triangular1.py
<ol><pre class="brush:sql;toolbar:false;">max = 8 
for x in range(1,max+1): 
  for y in range(1,x+1): 
    print(y,'', end='') 
  print()  

Listing 3 initialisiert zunächst die Variable max auf 8 und führt dann eine Schleife durch die Variable x von 1 bis max+1 aus. Die innere Schleife hat eine Schleifenvariable y mit einem Wert von 1 bis x+1 und gibt den Wert von y aus. Die Ausgabe lautet wie folgt:

04 Verwendung der Funktion „split()“ in einer for-Schleife

Python unterstützt eine Vielzahl praktischer Funktionen im Zusammenhang mit Zeichenfolgenoperationen, einschließlich der Funktion „split()“ und der Funktion „join()“. Die Funktion „split()“ ist nützlich, wenn Sie eine Textzeile in Wörter tokenisieren (d. h. „aufteilen“) und dann eine for-Schleife verwenden müssen, um die Wörter zu durchlaufen.

Die Funktion „join()“ ist das Gegenteil der Funktion „split()“, sie „verbindet“ zwei oder mehr Wörter in einer Zeile. Sie können zusätzliche Leerzeichen in einem Satz einfach entfernen, indem Sie die Funktion „split()“ verwenden und dann die Funktion „join()“ aufrufen, sodass zwischen jedem Wort in der Textzeile nur ein Leerzeichen steht.

1. Verwenden Sie die Funktion „split()“ für den Wortvergleich. „Compare2.py“ in Listing 4 zeigt, wie Sie jedes Wort in einer Textzeichenfolge mit einem anderen Wort mithilfe der Funktion „split()“ vergleichen.

Listing 4 Compare2.py
  • <ol><pre class="brush:sql;toolbar:false;">x = 'This is a string that contains abc and Abc' 
    y = 'abc' 
    identical = 0 
    casematch = 0 
    for w in x.split(): 
      if(w == y): 
        identical = identical + 1 
      elif (w.lower() == y.lower()): 
        casematch = casematch + 1 
    if(identical > 0): 
     print('found identical matches:', identical) 
    if(casematch > 0): 
     print('found case matches:', casematch) 
    if(casematch == 0 and identical == 0): 
     print('no matches found') 
    
Listing 4 Vergleichen Sie jedes Wort in der Zeichenfolge x mit dem Wort abc über die Funktion split(). Wenn die Wörter genau übereinstimmen, wird die identische Variable um 1 erhöht; andernfalls wird ein Vergleich ohne Berücksichtigung der Groß- und Kleinschreibung versucht, und wenn eine Übereinstimmung vorliegt, wird die casematch-Variable inkrementiert.

Die Ausgabe von Listing 4 sieht so aus:

2. 使用split()函数打印指定格式的文本

清单5 的FixedColumnCount1.py 说明了如何打印一组设定固定宽度的字符串。

  • 清单5 FixedColumnCount1.py
<ol><pre class="brush:sql;toolbar:false;">import string 
wordCount = 0 
str1 = 'this is a string with a set of words in it' 
print('Left-justified strings:') 
print('-----------------------') 
for w in str1.split(): 
   print('%-10s' % w) 
   wordCount = wordCount + 1 
   if(wordCount % 2 == 0): 
      print("") 
print("n") 
print('Right-justified strings:')  
print('------------------------')  
wordCount = 0 
for w in str1.split(): 
   print('%10s' % w) 
   wordCount = wordCount + 1 
   if(wordCount % 2 == 0): 
      print() 

清单5 首先初始化变量wordCount和str1,然后执行两个for循环。第一个for循环对str1的每个单词进行左对齐打印,第二个for循环对str1的每个单词进行右对齐打印。在每个循环中当wordCount是偶数的时候就输出一次换行,这样每打印两个连续的单词之后就换行。清单5的输出如下所示:

3. 使用split()函数打印固定宽度的文本

清单6 的FixedColumnWidth1.py说明了如何打印固定宽度的文本。

  • 清单6 FixedColumnWidth1.py
<ol><pre class="brush:sql;toolbar:false;">import string 
left = 0 
right = 0 
columnWidth = 8 
str1 = 'this is a string with a set of words in it and it will be split into a fixed column width' 
strLen = len(str1) 
print('Left-justified column:')  
print('----------------------')  
rowCount = int(strLen/columnWidth) 
for i in range(0,rowCount): 
   left  = i*columnWidth 
   right = (i+1)*columnWidth-1 
   word  = str1[left:right] 
   print("%-10s" % word) 
# check for a 'partial row' 
if(rowCount*columnWidth < strLen): 
   left  = rowCount*columnWidth-1; 
   right = strLen 
   word  = str1[left:right] 
   print("%-10s" % word) 

清单6初始化整型变量columnWidth和字符串类型变量str1。变量strLen是str1的长度,变量rowCount是strLen除以columnWidth的值。之后通过循环打印rowCount行,每行包含columnWidth个字符。代码的最后部分输出所有“剩余”的字符。清单6的输出如下所示:

4. 使用split()函数比较文本字符串

清单7 的CompareStrings1.py说明了如何判断一个文本字符串中的单词是否出现在另一个文本字符串中。

  • 清单7 CompareStrings1.py
<ol><pre class="brush:sql;toolbar:false;">text1 = 'a b c d' 
text2 = 'a b c e d' 
if(text2.find(text1) >= 0): 
  print('text1 is a substring of text2') 
else: 
  print('text1 is not a substring of text2') 
subStr = True 
for w in text1.split(): 
  if(text2.find(w) == -1): 
    subStr = False 
    break 
if(subStr == True): 
  print('Every word in text1 is a word in text2') 
else: 
  print('Not every word in text1 is a word in text2') 

清单7 首先初始化两个字符串变量text1和text2,然后通过条件逻辑判断字符串text2是否包含了text1(并输出相应打印信息)。

清单7的后半部分通过一个循环遍历字符串text1中的每个单词,并判断其是否出现在text2中。如果发现有匹配失败的情况,就设置变量subStr为False,并通过break语句跳出循环,提前终止for循环的执行。最后根据变量subStr的值打印对应的信息。清单7的输出如下所示:

05 用基础的for循环显示字符串中的字符

清单8 的StringChars1.py说明了如何打印一个文本字符串中的字符。

  • 清单8 StringChars1.py
<ol><pre class="brush:sql;toolbar:false;">text = 'abcdef' 
for ch in text: 
   print('char:',ch,'ord value:',ord(ch)) 
print 

清单8 的代码简单直接地通过一个for循环遍历字符串text并打印它的每个字符以及字符的ord值(ASCII 码)。清单8 的输出如下所示:

06 join()函数

另一个去掉多余空格的方法是使用join()函数,代码示例如下所示:

split()函数将一个文本字符串“分割”为一系列的单词,同时去掉多余的空格。接下来join()函数使用一个空格作为分隔符将字符串text1中的单词连接在一起。上述代码的最后部分使用字符串XYZ替换空格作为分隔符,执行相同的连接操作。上述代码的输出如下:

关于作者:奥斯瓦尔德·坎佩萨托(OswaldCampesato),专门研究深度学习、Java、Android和TensorFlow。他是25本书的作者/合著者。

本文摘编自《机器学习入门:Python语言实现》,经出版方授权发布。(ISBN:9787111695240)

 

Das obige ist der detaillierte Inhalt von6 Beispiele, 8 Codeausschnitte, ausführliche Erklärung der For-Schleife in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen