Python 迴圈巢狀

dicksonjyl560101發表於2017-12-26

Python 迴圈巢狀

 

Python 語言允許在一個迴圈體裡面嵌入另一個迴圈。

Python for 迴圈巢狀語法:

for iterating_var in sequence:

   for iterating_var in sequence:

      statements(s)

   statements(s)

Python while 迴圈巢狀語法:

while expression:

   while expression:

      statement(s)

   statement(s)

你可以在迴圈體內嵌入其他的迴圈體,如在while迴圈中可以嵌入for迴圈, 反之,你可以在for迴圈中嵌入while迴圈。

例項:

1. 從第一個列表中每次取出一個,從第二個列表中也每次取出一個,組合成一個新的列表,新列表中包含所有組合

List1 = ['zi', 'qiang', 'xue', 'tang']

List2 = [1, 2]

 

new_list = []

 

for m in List1:

    for n in List2:

        new_list.append([m, n])

 

print new_list

結果:

[['zi', 1], ['zi', 2], ['qiang', 1], ['qiang', 2], ['xue', 1], ['xue', 2], ['tang', 1], ['tang', 2]]

 

2. 從一個列表中每次取出兩個,找出所有組合方式

List = [1, 2, 3, 4, 5]

length = len(List)

 

for x in range(0, length-1):

    for y in range(x+1, length):

        print List[x], List[y]

結果:

1 2

1 3

1 4

1 5

2 3

2 4

2 5

3 4

3 5

4 5

 

3. 以下例項使用了巢狀迴圈輸出2~20之間的素數:

分析:對於一個數 n ,如果從 1 n ** 0.5(根號n) 的數都是能整除,那麼n這個數就是素數。

3.1 for 來實現

# -*- coding: utf-8 -*-

 

n = 20

 

for i in range(1, n):

    for j in range(2, int(i**0.5)):

        if i % j == 0:

            break

    else:

        print i, '是素數'

3.2 while 來實現

#!/usr/bin/python

# -*- coding: utf-8 -*-

 

i = 2

while(i < 20):

   j = 2

   while(j <= (i/j)):

      if not(i%j):  #  或者寫 if i % j == 0,如果整除的意思

          break

      j = j + 1

   if (j > i/j):

       print i, " 是素數"

   i = i + 1

 

print "Good bye!"

解釋:i % j 的意思是 i 除以 j 後的餘數。對於數字,0對應的布林值為假,其它值都是真,not ( i % j ) 的意思是 ,當 i % j 0 時才能條件成立,意思就是整除的時候,如果能整除的意思。

 

以上例項輸出結果:

是素數

是素數

是素數

是素數

11 是素數

13 是素數

17 是素數

Good bye!

 

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2149301/,如需轉載,請註明出處,否則將追究法律責任。

相關文章