日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python学习[第十三篇] 条件和循环

發(fā)布時間:2023/12/10 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python学习[第十三篇] 条件和循环 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

python學(xué)習(xí)[第十三篇] 條件和循環(huán)

if語句

單一if 語句

if語句有三個部分構(gòu)成,關(guān)鍵字if本身,判斷結(jié)果真假的條件表達(dá)式,以及表達(dá)式為真或非0是執(zhí)行的代碼

if expression:

? ? expr_true_suite

條件表達(dá)式可以是多重的 通過布爾操作符 and or not來實(shí)現(xiàn)

單一語句的if 代碼塊,如果if語句的執(zhí)行代碼只有一行,可以放在一行來寫

if expresssion: expr_tru_suite

>>> if True: print True ... True

?

else 語句

語法如下:

if expression:expr_true_suite else:expr_false_suite

?

elf 語句

可以有多個elif ,但只能由一個if 一個else , 語法如下

if expression1:expr1_true_suite elif expression2:expr2_true_suite elif expression3:expr3_true_suite .... elif expressionx:exprx_true_suite else:none_of_above_suite

?

python 中switch/case語句實(shí)現(xiàn)方法

我們可以通過字典來實(shí)現(xiàn),注意字典后的值不要加引號,對應(yīng)方法應(yīng)在字典前定義好。

def insert_met():print "this is insert_met"def delete_met():print "this is delete_met"def update_met():print "this is update_met"CMDs={"insert":insert_met,"delete":delete_met,"update":update_met}def choice(m):CMDs[m]()choice('insert')choice('update')choice('delete')

?

python中三元操作符的實(shí)現(xiàn)

?X if C else Y

#推薦使用方法一 # 方法1 利用if else X if C else Y x=17 y=15 smaller= x if x<y else y#方法2 利用 布爾操作符 x=17 y=15 smaller=(x<y and [x] or [y] )[0] smaller

?

while 語句

while 語法格式如下

while expression:suite_to_repeat

?

計數(shù)循環(huán)

提前定義一個變量然后修改變量的值 , 然后通過判斷該變量的條件表達(dá)式進(jìn)行循環(huán)

count = 0while count < 5 :print countcount +=1

?

無限循環(huán)

無限循環(huán)不一定是壞事,通常用于網(wǎng)絡(luò)服務(wù)器無限等待客戶端連接。也可以用于其它情況,但一定要定義好break 的情況.

while True:always_true_suite

?

?

for 語句

for語句可以遍序序列成員,可以用在列表解析和生成器表達(dá)式中,他會調(diào)用迭代器的next方法,捕獲StopIteration異常并結(jié)束循環(huán)。

for語句格式如下:

for itervar in iterable:suite_to_repeat

for 語句用在序列類型

通過序列項迭代

namelist=['pzq1','pzq2','pzq3']for x in namelist:print x, 'shuaiqi boy'

?

通過序列索引迭代

namelist=['pzq1','pzq2','pzq3']for x in range(len(namelist)):print namelist[x], 'shuaiqi boy'

通過序列項和索引迭代

namelist=['pzq1','pzq2','pzq3']for x in range(len(namelist)):print '%d %s shuaiqi boy' % (x,namelist[x])

?

用于迭代器類型?

用for循環(huán)訪問迭代器和訪問序列的方法差不多,唯一的區(qū)別就是for語句會做一些額外的事情。迭代器對象中有一個next()方法,調(diào)用后返回下一個條目。索引條目迭代完后,迭代器引發(fā)一個StopIteration異常告訴程序循環(huán)結(jié)束,for語句在內(nèi)部調(diào)用next()方法。

?

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

基本用法

range (start,end,step=1)

range(start,end)

range(end)

>>> range(0,10,2) [0, 2, 4, 6, 8] >>> range(0,10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

?

xrange()和range()功能一樣,不過當(dāng)有大范圍的列表是,xrange()更合適,因為不生成整個列表。

?

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

sorted() zip()

enumerted(seq) 返回enumerate迭代器

reversed(seq) 返回reversed迭代器

?

break continue pass

break 語句跳出當(dāng)前循環(huán)然后進(jìn)入下一跳語句

continue結(jié)束本次循環(huán),進(jìn)入下一次循環(huán)

pass語句 NOP No Operation .什么都不做

?

else 語句 與while和for

python中while和for也可以與else 一起使用

#while-else while expression:suite_to_repeat else:suite_for_else#for-else for itervar in iterable:suite_to_repeat else:suite_for_else# break 與else,break 跳出循環(huán)后不會執(zhí)行else >>> for x in range(0,5): ... if x == 2 : ... break ... print x ... else: ... print 'else' ...

?

迭代器

迭代器通俗來講就是可以通過next()方法依次變量對象中元素的數(shù)據(jù)結(jié)構(gòu)

如何迭代

通過next()方法來訪問對象,不是通過索引。迭代器有一些限制,不能先后移動,不能回到開始,也不能賦值一個迭代器。

使用迭代器

常用的可迭代的python數(shù)據(jù)類型為 序列,字典和文件

迭代序列

>>> mytu = (123,'xyz') >>> i=iter(mytu) >>> i.next() 123 >>> i.next() 'xyz' >>> i.next() Traceback (most recent call last):File "<stdin>", line 1, in <module> StopIteration

標(biāo)準(zhǔn)的訪問迭代器的方法

fetch = iter(seq)while True:try:i = fetch.next()except StopIteration:breakdo_something_to(i)例如: >>> fetch=iter(range(0,5)) >>> while True: ... try: ... i = fetch.next() ... except StopIteration: ... break ... print i ... 0 1 2 3 4

迭代字典

>>> x = { ('pzq','coder'):(1300,16500,0), ... ('pzq1','writer'):(1500,19990,0), ... ('pzq2','artist'):(2000,34000,0)} >>> x {('pzq', 'coder'): (1300, 16500, 0), ('pzq1', 'writer'): (1500, 19990, 0), ('pzq2', 'artist'): (2000, 34000, 0)} # 此例中 鍵是元組,值也是元組。為一種復(fù)雜的數(shù)據(jù)類型 >>> for i in x: ... print 'name is %s, Occupation is %s .' %(i) ... print 'month salary is %d, annual salary is %d, discount is %d ' % x[i] ... name is pzq, Occupation is coder . month salary is 1300, annual salary is 16500, discount is 0 name is pzq1, Occupation is writer . month salary is 1500, annual salary is 19990, discount is 0 name is pzq2, Occupation is artist . month salary is 2000, annual salary is 34000, discount is 0

?

迭代文件

f = open('test.txt') #print的時候結(jié)尾加了逗號,防止兩次換行符的出現(xiàn) for eachline in f:print eachline,

?

注意:不要在迭代可變對象的時候修改這個對象。

>>> myname=['pzq1','pzq2','pzq3','pzq4','pzq5'] >>> for i in range(len(myname)): ... print i,myname[i] ... del myname[i] ... 0 pzq1 1 pzq3 2 pzq5 3 Traceback (most recent call last):File "<stdin>", line 2, in <module> IndexError: list index out of range

通過iter()方法可以創(chuàng)建迭代器,通過reversed()和 enumerate()方法可以創(chuàng)建reversed類型的迭代器和enumerate(index,value) 類型的迭代器

?

列表解析 python2.0加入

列表解析表達(dá)式如下

[ expr for iter_var in iterable ]

擴(kuò)展列表解析表達(dá)式

[ expr for iter_var in iterable if cond_expr ]

函數(shù)式編程

map filter

map 對所有列表成員應(yīng)用一個操作

filter 基于一個表達(dá)式對列表成員過濾

>>> seq = [ 10,22,11,23,45,11,34 ]>>> map(lambda x: x **2 ,seq ) [100, 484, 121, 529, 2025, 121, 1156] #[ expr for iter_var in iterable ] >>> [ x**2 for x in seq ] [100, 484, 121, 529, 2025, 121, 1156]>>> filter(lambda x: x%2 ,seq) [11, 23, 45, 11] #[ expr for iter_var in iterable if cond_expr ] >>> [ x for x in seq if x%2 ] [11, 23, 45, 11]>>> map(lambda x: x**2 ,filter(lambda y : y%2,seq )) [121, 529, 2025, 121] #[ expr for iter_var in iterable if cond_expr ] >>> [ x**2 for x in seq if x%2 ] [121, 529, 2025, 121]>>> [ (x,y) for x in range(0,5) for y in range(0,5) ] [(0, 0), (0, 1), (0, 2), (0, 3), (0, 4), (1, 0), (1, 1), (1, 2), (1, 3), (1, 4),(2, 0), (2, 1), (2, 2), (2, 3), (2, 4), (3, 0), (3, 1), (3, 2), (3, 3), (3, 4),(4, 0), (4, 1), (4, 2), (4, 3), (4, 4)]

?

生成器表達(dá)式 python2.2加入

生成器表達(dá)式是列表解析的一個擴(kuò)展,生成器是特定的函數(shù),允許返回一個值,然后'暫停'代碼的執(zhí)行,稍后恢復(fù)。因為列表解析一個不足就是一次生成所有的數(shù)據(jù),用以創(chuàng)建列表,如果數(shù)據(jù)量巨大,會對內(nèi)存有很大影響。生成器表達(dá)式就是為了解決此問題。生成器表達(dá)式不返回一個字典,而是返回一個生成器,這個生成器在每次計算一個條目后,把這個條目yield出來。生成器采用了延遲計算,這與 range()和xrange()類似。

(expr for iter_var in iterable if cond_expr)

列表解析

[expr for iter_var in iterable if cond_expr]

f = open('c:/test.py','r') #列表解析 獲取總長度 sum([len(word) for line in f for word in line.strip()]) #生成器表達(dá)式獲取長度,刪除兩邊的[] f.seek(0) sum(len(word) for line in f for word in line.strip()) #os獲取長度 import os os.stat('c:/test.py').st_size#獲取最長的一行的長度 #列表解析 maxlines = max([len(x.strip()) for x in open ('c:/test.py','r')]) #生成器表達(dá)式 maxlines = max(len(x.strip()) for x in open('c:/test.py','r'))# >>> rows=[1,2,3] >>> def cols(): ... yield 15 ... yield 16 ... yield 17 ...>>> products=((i,j) for i in rows for j in cols()) >>> type(products) <type 'generator'> >>> for pair in products: ... print pair ... (1, 15) (1, 16) (1, 17) (2, 15) (2, 16) (2, 17) (3, 15) (3, 16) (3, 17) >>> type(pair) <type 'tuple'>

?

?

### end

轉(zhuǎn)載于:https://www.cnblogs.com/ryanpan/p/9355162.html

總結(jié)

以上是生活随笔為你收集整理的python学习[第十三篇] 条件和循环的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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