日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

python中循环迭代语句_python条件与循环-循环

發(fā)布時間:2025/3/21 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中循环迭代语句_python条件与循环-循环 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1 while語句

while用于實(shí)現(xiàn)循環(huán)語句,通過判斷條件是否為真,來決定是否繼續(xù)執(zhí)行。

1.1 一般語法

語法如下:

while expression:

suite_to_repeat

1.2 計(jì)數(shù)

1 2

3 >>> cnt =04

5 >>> while(cnt < 9):6

7 ... print 'the index is', cnt8

9 ... cnt += 1

10

11 ...12

13 the index is014

15 the index is 1

16

17 the index is 2

18

19 the index is 3

20

21 the index is 4

22

23 the index is 5

24

25 the index is 6

26

27 the index is 7

28

29 the index is 8

代碼塊里包含print和自增語句,將被重復(fù)執(zhí)行,知道cnt不下于9。

1.3 無限循環(huán)

while True:

suite_to_repeat

條件表達(dá)式一直為真。

2? for語句

for語句是python提供的另一個循環(huán)機(jī)制,可以用于遍歷序列,可以用在列表解析和生成器表達(dá)式中。

2. 1 一般語法

for循環(huán)會訪問一個可迭代對象(例如序列或疊加器)中的所有元素,并在所有條目處理過后結(jié)束循環(huán)。語法如下:

for iter_var in iterable:

suite_to_repeat

每次循環(huán),iter_var迭代變量被設(shè)置為可迭代對象(序列、迭代器或其他支持迭代的對象)的當(dāng)前元素,提供給suite_to_repeat語句塊使用。

2.2 用于序列類型

主要介紹for循環(huán)迭代不同的序列對象:字符串、列表及元組。

迭代序列的三種方法:

(1)通過序列項(xiàng)迭代

每次迭代,eachName變量都被設(shè)置為列表中特定的某個元素。

(2)通過序列索引迭代

>>> namelist = ['Bob', 'Lisa', 'Henry']

>>> for nameIndex in range(len(namelist)):

... print namelist[nameIndex]

...

Bob

Lisa

Henry

使用len()函數(shù)獲取序列長度,使用range()函數(shù)創(chuàng)建了要迭代的序列。

(3)使用項(xiàng)和索引迭代

使用內(nèi)建的enumerate()函數(shù)

>>> namelist = ['Bob', 'Lisa', 'Henry']

>>> for i, eachName in enumerate(namelist):

... print i,eachName

...

0 Bob

1 Lisa

2 Henry

3 range()內(nèi)建函數(shù)

range()完整語法如下:

range([start,] stop[, step])

range()會返回一個包含所有k的列表(start<=k

>>> range(3, 7)

[3, 4, 5, 6]

4 與序列相關(guān)的內(nèi)建函數(shù)

sorted()、reversed()、enumerate()、zip()

reversed():返回一個反序訪問的迭代器;

1 >>> namelist = ['Bob', 'Lisa', 'Henry']2

3 >>> years = [1978, 1989, 1990, 2003]4

5 >>> for name insorted(namelist):6

7 ... printname,8

9 ...10

11 Bob Henry Lisa12

13 >>>namelist14

15 ['Bob', 'Lisa', 'Henry']16

17 >>> for name inreversed(namelist):18

19 ... printname,20

21 ...22

23 Henry Lisa Bob24

25 >>> for i, name inenumerate(namelist):26

27 ... printi, name28

29 ...30

31 0 Bob32

33 1Lisa34

35 2Henry36

37 >>> for name, year inzip(namelist, years):38

39 ... printyear, name40

41 ...42

43 1978Bob44

45 1989Lisa46

47 1990 Henry

5 break語句

break語句用于結(jié)束當(dāng)前循環(huán)跳轉(zhuǎn)到下條語句。

6 continue語句

當(dāng)遇到continue語句時,程序終止當(dāng)前循環(huán),并忽略剩余的語句,然后回到循環(huán)的頂端。在開始下一次迭代前,如果是條件循環(huán)(while循環(huán)),將驗(yàn)證條件表達(dá)式;如果是迭代循環(huán)(for循環(huán)),驗(yàn)證是否還有元素可以迭代,只有在驗(yàn)證成功的情況下,才開始下一次迭代。

>>> valid =False>>> count = 3

>>> while count >0:

... input= raw_input('Enter passsword:')

...for eachPasswd inpasswdList:

...if input ==eachPasswd:

... valid=True

...break...if notvalid:

...print "invalid input"... count-= 1...continue...else:

...break

7 pass語句

pass語句不做任何事情(即NOP,No Operation,無操作),用于在需要有語句塊的地方不寫任何語句。

8 迭代器和iter()函數(shù)

從根本上來說,迭代器就是有一個next()方法的對象,而不是通過索引來計(jì)數(shù)。當(dāng)你或是一個循環(huán)機(jī)制需要下一項(xiàng)時,調(diào)用迭代器的next()方法就可以獲得它。

迭代器為類序列對象提供了一個類序列的接口,它們是一組數(shù)據(jù)結(jié)構(gòu),可以利用它們的索引從0開始一直"迭代"到序列的最后一個條目。

8.1 使用迭代器

(1)序列

>>> i = iter(myTuple)

>>> i.next()

123

>>> i.next()

'abc'

>>> i.next()

45.600000000000001

>>> i.next()

Traceback (most recent call last):

File "", line 1, in

StopIteration

序列會自動的產(chǎn)生它們字節(jié)的迭代器。

for I in seq:

do_something_to(i)

(2)字典

字典也是可迭代的python數(shù)據(jù)類型。字典的迭代器會遍歷它的鍵(key)。語句for eachKey in myDict.keys()可以縮寫為for eachKey in myDict。

>>> myDict = {'a':10, 'b':20, 'c':30}

>>> for eachKey in myDict:

... print eachKey, myDict[eachKey]

...

a 10

c 30

b 20

另外,python還有三個新的內(nèi)建字典方法來定義迭代:myDict.iterkeys()(通過鍵迭代)、myDict.itervalues()(通過值迭代)及myDict.iteritems()(通過鍵-值對迭代)。

(3)文件

文件對象生成的迭代器會自動調(diào)用readline()方法,這樣循環(huán)可以訪問文本文件的所有行,就可以使用for eachline in myFile替換for eachline in myFile.readlines()

>>> myFile = open('testfile.txt')

>>> for eachline in myFile:

... print eachline

...

8.2 創(chuàng)建迭代器

對一個對象調(diào)用iter()就可以得到它的迭代器。語法如下:

iter(obj)

iter(func, sentinel)

如果傳遞一個參數(shù)給iter(),會檢查傳遞的參數(shù)是不是一個序列,如果是,根據(jù)索引從0一直迭代到序列結(jié)束。如果是傳遞的兩個參數(shù)給iter(),會重復(fù)的調(diào)用func,直到迭代器的下個值等于sentinel。

9 列表解析

列表解析可用于動態(tài)的創(chuàng)建列表,語法如下:

[expr for iter_var in iterable]

前面的expr應(yīng)用于序列的每個成員,最后的結(jié)果值是該表達(dá)式產(chǎn)生的列表。迭代變量并不需要是表達(dá)式的一部分。

>>> [x**2 for x in range(6)]

[0, 1, 4, 9, 16, 25]

還可以和if表達(dá)式結(jié)合使用,擴(kuò)展語法如下:

[expr for iter_var in iterable if cond_expr]

這個語法會過濾或"捕捉"滿足條件表達(dá)式cond_expr的序列成員。

>>> [x for x in range(6) if x % 2]

[1, 3, 5]

(1)舉例:矩陣樣例

如一個3行5列的矩陣

>>> [(x+1, y+1) for x in range(3) for y in range(5)]

[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5)]

10 生成器表達(dá)式

生成器表達(dá)式是列表解析的一個擴(kuò)展。生成器是特定的函數(shù),允許你返回一個值,然后"暫停"代碼的執(zhí)行,稍后恢復(fù)。

列表解析的不足是必須生成所有的數(shù)據(jù),用以創(chuàng)建整個列表。生成器的基本語法和列表相似,不過不是真正的創(chuàng)建數(shù)字列表,而是返回一個生成器,這個生成器每次計(jì)算出一個條目后,把這個條目"產(chǎn)生"(yield)出來。

生成器表達(dá)式如下:

(expr for iter_var in iterable if cond_expr)

(1)舉例:交叉配對樣例

>>> rows = [1, 2, 3, 17]

>>> defcols():

... yield 56... yield 2... yield 1

>>> x_product_pairs = ((i, j) for i in rows for j incols())

>>> for pair inx_product_pairs:

... printpair

...

(1, 56)

(1, 2)

(1, 1)

(2, 56)

(2, 2)

(2, 1)

(3, 56)

(3, 2)

(3, 1)

(17, 56)

(17, 2)

(17, 1)

(2)重構(gòu)樣例

獲取文件中長度最大的行:

1 f = open('/etc/motd','r')2

3 longest = max(len(x.strip()) for x inf)4

5 f.close()6

7 return longest

簡化如下:

1 return max(len(x.strip()) for x in open('/etc/motd'))

總結(jié)

以上是生活随笔為你收集整理的python中循环迭代语句_python条件与循环-循环的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。