ホームページ  >  記事  >  バックエンド開発  >  6 つの例、8 つのコード スニペット、Python の For ループの詳細な説明

6 つの例、8 つのコード スニペット、Python の For ループの詳細な説明

PHPz
PHPz転載
2023-04-11 19:43:172576ブラウズ

Python は for ループをサポートしており、その構文は他の言語 (JavaScript や Java など) とは若干異なります。次のコード ブロックは、Python で for ループを使用してリスト内の要素を反復処理する方法を示しています。

上記のコード スニペットは 3 つの文字を区切っています。行に分割して印刷されます。 print ステートメントの後にカンマ「,」を追加することで、出力を同じ行に制限できます (印刷する文字を多く指定すると「折り返されます」)。コードは次のとおりです:

テキストの内容を複数行ではなく 1 行で表示したい場合は、上記の形式のコードを使用できます。 Python には、ループの方向を反転できる組み込み関数 reversed() も用意されています。例:

オブジェクトのサイズが決定されているか、逆方向トラバーサル関数はオブジェクトが _reversed_() メソッドを実装している場合にのみ有効です。

01 tryExcept を使用した for ループ

#リスト 1 の StringToNums.py は、文字列から変換された整数のセットを合計する方法を示しています。

  • リスト 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') 

リスト 1 では、まず変数 line、sum、invalidStr を初期化し、次に line の内容を表示します。次に、その行の内容が単語に分割され、単語の値が try コード ブロックを通じて変数 sum に 1 つずつ累積されます。例外が発生した場合、現在の str の内容が変数 validStr に追加されます。

ループの実行が終了すると、リスト 1 は数値単語の合計を出力し、その後に数値以外の単語を表示します。出力は次のようになります。

02 指数演算

リスト 2 の Nth_exponet.py は、一連の整数を計算する方法を示しています。力の。

  • リスト 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) 

リスト 2 には pwr() 関数があり、そのパラメーターは数値です。この関数のループは、1 から n まで乗じたパラメータを出力できます。n の範囲は 1 から maxCount 1 です。

コードの 2 番目の部分では、for ループを通じて pwr() 関数を 1 から maxCount 1 まで呼び出します。出力は次のようになります。

03 ネストされたループ

Triangular1.py のリスト 3 は、連続する整数の行を出力する方法を示しています。 (1 から開始) 各行の長さは前の行より 1 長くなります。

  • リスト 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()  

リスト 3 では、まず max 変数を 8 に初期化し、次に変数 x を介してループを実行します。 1 ~ 最大 1 。内側のループには、1 から x 1 までの値を持つループ変数 y があり、y の値を出力します。出力は次のとおりです。

04 for ループでの split() 関数の使用

Python はさまざまな便利な文字列操作をサポートしています。関連関数 (split() 関数や join() 関数など)。 Split() 関数は、テキスト行を単語にトークン化 (つまり「分割」) し、for ループを使用して単語を反復処理する必要がある場合に便利です。

join() 関数は、2 つ以上の単語を 1 行に「結合」する Split() 関数の逆です。文内の余分なスペースを簡単に削除するには、split() 関数を使用してから join() 関数を呼び出し、テキスト行の各単語の間にスペースが 1 つだけになるようにします。

1. 単語の比較には、split() 関数を使用します。

リスト 4 の Compare2.py は、split() 関数 Compare を使用して、テキスト文字列内の各単語を別の単語と比較する方法を示しています。

  • リスト 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') 

リスト 4 では、split() 関数を使用して、文字列 x 内の各単語と単語 abc を比較します。比較する。単語が完全に一致する場合は、同一の変数が 1 ずつ増分されます。それ以外の場合は、大文字と小文字を区別しない比較が試行され、一致する場合は casematch 変数が増分されます。

リスト 4 の出力は次のとおりです。

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)

 

以上が6 つの例、8 つのコード スニペット、Python の For ループの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。