第3章 Python編程基礎_第1頁
第3章 Python編程基礎_第2頁
第3章 Python編程基礎_第3頁
第3章 Python編程基礎_第4頁
第3章 Python編程基礎_第5頁
已閱讀5頁,還剩90頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第3章Python編程基礎第2章Python開發(fā)工具Python基礎語法Python變量與數(shù)據(jù)類型Python運算符Python數(shù)據(jù)結構Python選擇結構Python循環(huán)結構Python一般函數(shù)Python高階函數(shù)Python模塊和包3.1Python基礎語法3.1.1Python標識符標識符是電腦語言中允許作為名字的有效字符串集合。其中,有一部分是關鍵字,構成語言的標識符。這樣的標識符是不能做它用的標識符的,否則會引起語法錯誤(SyntaxError異常)。合法的Python標識符,需要遵守如下規(guī)定:第一個字符必須是字母或下劃線(_)剩下的字符可以是字母和數(shù)字或下劃線大小寫敏感不能是Python的關鍵字,例如def、class就不能作為標識符3.1Python基礎語法3.1.2Python關鍵字關鍵字不能用作常量或變量名稱,或任何其他標識符名稱。輸出結果:['False','None','True','and','as','assert','async','await','break','class','continue','def','del','elif','else','except','finally','for','from','global','if','import','in','is','lambda','nonlocal','not','or','pass','raise','return','try','while','with','yield']import

keywordprint(keyword.kwlist)3.1Python基礎語法3.1.3縮進任何一種編程語言都有各自的語法和編程規(guī)范,Python之所以以“優(yōu)雅,簡單”著稱,其中一個最重要的原因,就是它的“縮進”。Python用縮進層次來組織代碼塊,而約定一個縮進是用“4個空格”來表示,請務必遵守約定俗成的習慣,堅持使用4個空格的縮進。if

True:

print("南寧")else:

print("桂林")3.1Python基礎語法3.1.4多行語句Python語句中一般以新行作為為語句的結束符。但是我們可以使用斜杠(\)將一行的語句分為多行顯示,如下所示:語句中包含[],{}或()括號就不需要使用多行連接符。如下實例:total=item_one+\

item_two+\

item_threedays=['Monday','Tuesday','Wednesday',

'Thursday','Friday']3.1Python基礎語法3.1.5Python引號Python接收單引號(‘’),雙引號(“”),三引號(‘‘‘’’’)來表示字符串,引號的開始與結束必須的相同類型的。word='word'sentence="Thisisasentence."paragraph="""Thisisaparagraph.Itismadeupofmultiplelinesandsentences."""3.1Python基礎語法3.1.6Python注釋以“#”開頭的語句是注釋,不一定要出現(xiàn)在行首,在某些語句后面也可以加注釋,注釋是給人看的,可以是任意內(nèi)容,解釋器會忽略掉注釋,但注意不要使用無意義的注釋。#第一條注釋print("Hello,Python!");

#第二條注釋name="高廣尚"

#這又是一條注釋#注釋1#注釋2#注釋3#注釋43.1Python基礎語法3.1.7Python空格和空行在Python中,為了讓代碼看起來更清晰,具有更好的可讀性,有時會在代碼中太內(nèi)疚空格和空行??崭窕蛘呖招信c代碼縮進不同,并不是Python語法的一部分。例如在變量賦值時增加空格。hello="world"class

A:

def

__init__(self):

pass

def

hello(self):

pass

def

main():

pass3.1Python基礎語法3.1.8Print輸出print()默認輸出是換行的,如果要實現(xiàn)不換行需要加上end參數(shù)。x="a"y="b"print(x,end='')print(y,end='')3.2Python變量與數(shù)據(jù)類型3.2.1變量變量來源于數(shù)學,是計算機語言中能儲存計算結果或能表示值抽象概念,變量可以通過變量名訪問。在Python中變量命名規(guī)定,必須是大小寫英文,數(shù)字和下劃線(_)的組合,并且不能用數(shù)字開頭。3.2Python變量與數(shù)據(jù)類型3.2.1變量(1)聲明變量name="高廣尚”(2)變量賦值a=123#a是整數(shù)a='abc'#a是字符串(3)多個變量賦值

a=b=c=1a,b,c=1,2,"廣西”(4)常量BI=3.143.2Python變量與數(shù)據(jù)類型3.2.2數(shù)據(jù)類型Python3中有六個標準的數(shù)據(jù)類型:Number(數(shù)字)、String(字符串)、List(列表)、Tuple(元組)、Sets(集合)、Dictionary(字典)。不可變數(shù)據(jù)類型(3個):Number(數(shù)字)、String(字符串)、Tuple(元組);可變數(shù)據(jù)類型(3個):List(列表)、Dictionary(字典)、Set(集合)。3.2Python變量與數(shù)據(jù)類型3.2.2數(shù)據(jù)類型(1)Number(數(shù)字)Python3支持int、float、bool、complex(復數(shù))。數(shù)字類型顧名思義是用來存儲數(shù)值的。counter=100#整型變量miles=1000.0#浮點型變量name="高廣尚"#字符串print(counter)print(miles)print(name)3.2Python變量與數(shù)據(jù)類型3.2.2數(shù)據(jù)類型(1)Number(數(shù)字)print(5+4)

#加法

輸出9print(4.3-2)#減法

輸出2.3print(3*7)

#乘法

輸出21print(2/4)

#除法,得到一個浮點數(shù)

輸出0.5print(2//4)#除法,得到一個整數(shù)

輸出0print(17%3)#取余

輸出2print(2**5)#乘方

輸出323.2Python變量與數(shù)據(jù)類型3.2.2數(shù)據(jù)類型(2)String示例:字符串常見操作s='優(yōu)雅的Python'#切片s[0],s[-1],s[3:],s[::-1]#'優(yōu)','n','Python','nohtyP的雅優(yōu)'#替換,還可以使用正則表達式替換s.replace('Python','Java')#'優(yōu)雅的Java'#查找,find()、index()、rfind()、rindex()s.find('P')

#3,返回第一次出現(xiàn)的子串的下標s.find('h',2)

#6,設定下標2開始查找3.3Python運算符Python語言支持以下類型的運算符:算術運算符、比較(關系)運算符、賦值運算符、邏輯運算符、位運算符、成員運算符、身份運算符和運算符優(yōu)先級。3.3.1算術運算符a=3b=5a+b

#結果是8a-b

#結果是-2a*b

#結果是15b/a

#結果是1.6666666666666667b//a

#結果是1b**a

#結果是125b%a

#結果是23.3Python運算符3.3.2一元運算符x=3+x

#結果是3-x

#結果是-3~x

#結果是-4,相當于-(x+1)3.3Python運算符3.3.3關系(比較)運算符3.3.4賦值運算符a=4

b=5a!=b

#結果是Trueb>a

#結果是Truex=5x+=5x

#結果是103.3Python運算符3.3.5邏輯運算符3.3.6成員運算符3>2

and

2>0

#結果是True3>2

and

2>4

#結果是False3>2

or

2>4

#結果是True3>5

or

2>4

#結果是Falsenot

3>5

#結果是Truenot

3>2

#結果是Falseletters='abcd''a'

in

letters

#結果是True'e'

not

in

letters

#結果是Truelist1=[1,2,3,4,5]

1

in

list1

#結果是True6

not

in

list1

#結果是Truedict1={'a':1,'b':2}3.3Python運算符3.3.7身份運算符身份運算符用于比較兩個對象的存儲單元。==比較的值是否相等,而is和isnot是比較兩個對象是否引用同一個內(nèi)存地址。a=[1,2,3]b=[1,2,3]a==b

#結果是Truea

is

b

#結果是Falseid(a)

#結果是2551639326088id(b)

#結果是25516394893523.3Python運算符3.3.8位運算符a=5#'0b00000101'b=3#'0b00000011'a&b

#結果是1a|b

#結果是7a^b

#結果是6~a

#結果是-6a<<2

#結果是20b>>2

#結果是03.3Python運算符3.3.9運算符優(yōu)先級3.4Python數(shù)據(jù)結構Python內(nèi)建的數(shù)據(jù)結構有列表,元組,字典和集合等。此外常用的還有pandas中的series和dataframe(后面會詳細分析)。(1)有序數(shù)據(jù)結構list(列表),是有序數(shù)據(jù)結構,沒有固定大小,可以通過對偏移量以及其他方法修改列表大小。列表的基本形式如:[1,2,3,4]。tuple(元組),是有序數(shù)據(jù)結構,是不可變的,可以進行組合和復制運算后會生成一個新的元組。元組的基本形式比如:(1,3,6,10)。str(字符串),也是有序數(shù)據(jù)結構,字符串的基本形式比如:’hello'。3.4Python數(shù)據(jù)結構Python內(nèi)建的數(shù)據(jù)結構有列表,元組,字典和集合等。此外常用的還有pandas中的series和dataframe(后面會詳細分析)。(2)無序數(shù)據(jù)結構dict(字典)是無序的鍵:值對(key:value對)的集合。鍵必須是互不相同的(在同一個字典之內(nèi))。字典的基本形式如:{'jack':4098,'sape':4139}。set(集合),是一個無序不重復元素的集?;竟δ馨P系運算和消除重復元素。集合的基本形式如:{'apple','orange','banana'}。3.4Python數(shù)據(jù)結構3.4.1列表(1)創(chuàng)建列表'直接創(chuàng)建法'x=[1,3,5,8,6]print(x)fruits=['apple','banana','pears']z=[[1,2,3],'apple',True]print(z)輸出結果:[1,3,5,8,6][[1,2,3],'apple',True]3.4Python數(shù)據(jù)結構3.4.1列表(1)創(chuàng)建列表'range函數(shù)法'a=list(range(5));print(a)b=list(range(1,5));print(b)c=list(range(1,7,2));print(c)d=list(range(5,0,-1));print(d)輸出結果:[0,1,2,3,4][1,2,3,4][1,3,5][5,4,3,2,1]3.4Python數(shù)據(jù)結構3.4.1列表(1)創(chuàng)建列表'列表生成式'm=[0

for

i

in

range(5)];print(m)n=[i**2

for

i

in

range(5)];print(n)l_2d=[[i+j

for

i

in

range(3)]for

j

in

range(3)];print(l_2d)輸出結果:[0,0,0,0,0][0,1,4,9,16][[0,1,2],[1,2,3],[2,3,4]]3.4Python數(shù)據(jù)結構3.4.1列表(1)創(chuàng)建列表'類型轉換法's='helloworld!'s21=list(s);print(s21)t=(1,2,3,4);print(list(t))輸出結果:['h','e','l','l','o','','w','o','r','l','d','!'][1,2,3,4]3.4Python數(shù)據(jù)結構3.4.1列表(2)列表索引使用[頭下標:尾下標]來截取部分字符串,其中下標是從0開始算起,可以是正數(shù)或負數(shù),下標可以為空表示取到頭或尾。3.4Python數(shù)據(jù)結構3.4.1列表(2)列表索引l=[1,2,3,4,5]l_2d=[[1,2,3],[4,5,6]]print(l[0],l[1],l[-1],l[-3])

#一維列表下標訪問,下標從0開始print(l_2d[0],l_2d[0][0],l_2d[-1][-1])

#二維列表下標訪問輸出結果:1253[1,2,3]163.4Python數(shù)據(jù)結構3.4.1列表(3)修改列表l=[1,2,3,4,5]l[0]=2

#修改元素l輸出結果:[2,2,3,4,5]3.4Python數(shù)據(jù)結構3.4.1列表(4)使用列表l=[1,2,3,4,5]n=len(l)

#列表長度n輸出結果:5l=[1,2,3,4,5]max_l=max(l)min_l=min(l)

#最大值[max_l,min_l]

#最小值輸出結果:[5,1]3.4Python數(shù)據(jù)結構3.4.2元組和list相比,由于不可更改,tuple中存儲的數(shù)據(jù)具有更強的安全性。(1)創(chuàng)建元組t0=();print(t0)#空元組t1=(1,);print(t1)#只有單個元素的元組t2=2,3;print(t2)#以逗號隔開默認為元組輸出結果:()(1,)(2,3)3.4Python數(shù)據(jù)結構3.4.2元組和list相比,由于不可更改,tuple中存儲的數(shù)據(jù)具有更強的安全性。(2)修改元組t=(1,3,2,6,5,4)#t[0]=2

#tuple內(nèi)容不可修改#t.sort()

#tuple不存在insert,sort,pop等方法l=sorted(t)

#調(diào)用sorted函數(shù)先將tuple轉換成list再排序print(t,l)輸出結果:(1,3,2,6,5,4)[1,2,3,4,5,6]3.4Python數(shù)據(jù)結構3.4.2元組和list相比,由于不可更改,tuple中存儲的數(shù)據(jù)具有更強的安全性。(3)使用元組t=(1,1,0,0,1,3)print(t)print(t[-1],t[0:3])

#索引print(len(t),max(t),min(t),sum(t))#常用函數(shù)print(t.count(1),t.index(1,-4,-1))#元組方法

輸出結果:(1,1,0,0,1,3)3(1,1,0)6306343.4Python數(shù)據(jù)結構3.4.3字典字典是無序的key:value鍵值對的集合key必須是不可改變的數(shù)據(jù)類型,包括str、int、float、bool、tuple等,不能是list、dict、set等。3.4Python數(shù)據(jù)結構3.4.3字典(1)創(chuàng)建字典'直接創(chuàng)建法'tel={'Jack''Jimmy';print(tel)gender=dict([('Jack','male'),('Jimmy','male')]);print(gender)輸出結果:{'Jack''Jimmy'{'Jack':'male','Jimmy':'male'}3.4Python數(shù)據(jù)結構3.4.3字典(1)創(chuàng)建字典'字典生成式'd={x:x**2

for

x

in

range(5)};print(d)g={k:v

for(k,v)in

zip(['a','b'],[1,2])};print(g)輸出結果:{0:0,1:1,2:4,3:9,4:16}{'a':1,'b':2}3.4Python數(shù)據(jù)結構3.4.3字典(1)創(chuàng)建字典'fromkeys函數(shù)法'd=dict.fromkeys(['a','b','c'],10);print(d)g=dict.fromkeys(['a','b','c']);print(g)輸出結果:{'a':10,'b':10,'c':10}{'a':None,'b':None,'c':None}3.4Python數(shù)據(jù)結構3.4.3字典(2)字典常用操作'查詢,get方法'd={'a':1,'b':2,'c':3}print(d['a'])

#由key查詢value#print(d['f'])

#若key不存在會報錯print(d.get('f'))#使用get方法可以避免錯誤print(d.get('f',0))#若key不存在,返回設定值0輸出結果:1None03.4Python數(shù)據(jù)結構3.4.3字典(2)字典常用操作'插值,setdefault方法'd={'a':1,'b':2,'c':3};print(d)d['e']=4;print(d)d.setdefault('h',0);#若key不存在,設置默認值d.setdefault('a',0);#若已經(jīng)存在這個key,setdefault不會修改key原來的值,而且該方法會返回key原來的值。print(d)#'h':0被增加,'a'對應的值未被修改輸出結果:{'a':1,'b':2,'c':3}{'a':1,'b':2,'c':3,'e':4}{'a':1,'b':2,'c':3,'e':4,'h':0}3.4Python數(shù)據(jù)結構3.4.3字典(2)字典常用操作'更新值,update方法'd={'a':1,'b':2,'c':3};print(d)d['a']=10;print(d)#更新單個值d.update({'a':100,'b':200,'f':300});print(d)#更新批量值輸出結果:{'a':1,'b':2,'c':3}{'a':10,'b':2,'c':3}{'a':100,'b':200,'c':3,'f':300}3.4Python數(shù)據(jù)結構3.4.3字典(2)字典常用操作'刪除值,pop方法'd={'a':1,'b':2,'c':3,'f':5};print(d)x=d.pop('a');print(d);print(x)#用pop刪除值del(d['b']);print(d)

#用del刪除值x=d.popitem();print(x);print(d)#用popitem彈出鍵值對d.clear();print(d)#清空列表輸出結果:{'a':1,'b':2,'c':3,'f':5}{'b':2,'c':3,'f':5}1{'c':3,'f':5}('f',5){'c':3}{}3.4Python數(shù)據(jù)結構3.4.3字典(2)字典常用操作'返回鍵值列表,items方法'd={'a':1,'b':2,'c':3};print(d)k=list(d.keys());print(k)v=list(d.values());print(v)kv=list(d.items());print(kv)輸出結果:{'a':1,'b':2,'c':3}['a','b','c'][1,2,3][('a',1),('b',2),('c',3)]3.4Python數(shù)據(jù)結構3.4.4集合集合可以看成是一種只有key的字典。(1)創(chuàng)建集合s0=set();print(s0)#空集不能用{}表示#s1={[1,2,3],True,'hello'};#集合的元素不能是可變數(shù)據(jù)類型s1={(1,2,3),True,'hello'};print(s1)#直接賦值法s2={x**2

for

x

in

range(5)};print(s2)#集合生成式s3=set([1,1,1,2,2,2,3,3,3]);print(s3)

#類型轉換法,會去除重復元素輸出結果:set(){True,'hello',(1,2,3)}{0,1,4,9,16}{1,2,3}3.4Python數(shù)據(jù)結構3.4.4集合(2)修改集合s={1,2,3,4,5};print(s)s.add(7);print(s)#增加元素s.pop();print(s)#彈出元素,無參數(shù)s.remove(3);print(s)#刪除指定內(nèi)容元素,該元素必須存在s.discard(5);print(s)#若存在,刪除指定內(nèi)容元素s.update({1,2,3,9,10});print(s)#更新集合,與dict中的update功能一致輸出結果:{1,2,3,4,5}{1,2,3,4,5,7}{2,3,4,5,7}{2,4,5,7}{2,4,7}{2,3,4,1,7,9,10}3.4Python數(shù)據(jù)結構3.4.4集合(3)使用集合s={1,2,3,4,5};t={4,5,6};print(s,t)print(len(s),max(s),min(s),sum(tuple(s)))#常用函數(shù)print(s,s.union(t))#并集print(s|t)#并集print(s,s.intersection(t))#交集print(s&t)#交集print(s,s.difference(t))#差集:廣義補集,元素屬于s但不屬于tprint(s,s.symmetric_difference(t))#對稱差集:元素屬于s但不屬于t或者元素屬于t但不屬于sprint(s.issubset(t),s.issuperset(t),s.isdisjoint(t))#是否子集,超集,不相交集s.intersection_update(t);print(s)#求交集,將結果更新到s中3.5Python選擇結構3.5.1if語句(1)if...語句#求兩個數(shù)當中較大的那個值a,b=2,3ifa>b:

c=aelse:

c=bprint('themaxofa,bis',c)3.5Python選擇結構3.5.1if語句(2)if...else...語句#求兩個數(shù)當中較大的那個值a,b=2,3ifa>b:

c=aelse:

c=bprint('themaxofa,bis',c)3.5Python選擇結構3.5.1if語句(3)單行if...else...語句#求兩個數(shù)當中較大的那個值a,b=2,3c=aifa>=belsebprint('themaxofa,bis',c)3.5Python選擇結構3.5.1if語句(4)if...elif...else...語句#求三個數(shù)當中較大的那個值a,b,c=3,1,2ifa>=banda>=c:

d=aelifb>=c:

d=belse:

d=cprint('themaxofa,b,cis',d)3.5Python選擇結構3.5.2多分支選擇(1)利用if...elif...elif...else...實現(xiàn)多分支選擇結構#給定城市名稱,求郵政編碼city='Guangzhou'if

city=='Beijing':

postcode='100000'elif

city=='Shanghai':

postcode='200000'elif

city=='Guangzhou':

postcode='510000'elif

city=='Shenzhen':

postcode='518000'else:

postcode=='XXXXXX'print('%s\'spostcodeis:%s'%(city,postcode))3.5Python選擇結構3.5.2多分支選擇(2)利用字典查詢'利用字典查詢'#給定城市名稱,求郵政編碼city='Dalian'Dict_postcode={'Beijing':'100000','Shanghai':'200000','Guangzhou':'510000','Shenzhen':'518000'}postcode=Dict_postcode.get(city,'XXXXXX')print('%s\'spostcodeis:%s'%(city,postcode))3.5Python選擇結構3.5.3短路計算和強制類型轉換Python的與,或,非分別用關鍵字and,or,not來表示。[],{},set()會被視為False。對and而言,Python會從左到右計算操作對象,然后返回第一個為假的操作對象。對or而言,Python會從左到右計算操作對象,然后返回第一個為真的操作對象。找到第一個為假或為真的操作對象后,此后操作對象不再被計算。and和or邏輯運算的這種性質(zhì)叫做短路計算。3.5Python選擇結構3.5.3短路計算和強制類型轉換(3)利用短路計算實現(xiàn)選擇結構'利用短路計算實現(xiàn)選擇結構'#求兩個數(shù)當中較大的那個數(shù)a,b=3,2c=(a>=b

and

a)or(a<b

and

b)print('themaxofa,bis',c)3.5Python選擇結構3.5.3短路計算和強制類型轉換(4)利用強制類型轉換實現(xiàn)選擇結構'利用強制類型轉換實現(xiàn)選擇結構'#求兩個數(shù)當中較大的那個數(shù)a,b=4,-1c=(a>=b)*a+(a<b)*b#True強制轉換為1,F(xiàn)alse強制轉換為0print('themaxofa,bis',c)3.5Python選擇結構3.5.4try...except...語句(1)利用if語句來判斷是否合法#嘗試對兩個列表做點乘from

numpy

import

dot

a=[1,2,3];b=[3,4,5,6]if

len(a)==len(b):

ab=dot(a,b)

print('a.b=',ab)else:

print("Error:a&bdon'thavethesamelength!")3.5Python選擇結構3.5.4try...except...語句(2)使用try...except...語句來處理錯誤'使用try...except...語句來處理錯誤'l=[1,2,'abc',True]try:

sum_l=sum(l)

print(sum_l)except

Exception

as

e:

print("Error:",e)3.6Python循環(huán)結構Python中實現(xiàn)循環(huán)結構的幾種方式:for循環(huán),while循環(huán),生成式,高階函數(shù),向量化。3.6.1for循環(huán)Python中的for循環(huán)可以遍歷任何序列的項目,如一個列表或者一個字符串。for循環(huán)基本格式如下:for

變量

in

序列:

循環(huán)語句for

i

in[0,1,2]:

print(i)輸出結果:0,1,23.6Python循環(huán)結構Python中實現(xiàn)循環(huán)結構的幾種方式:for循環(huán),while循環(huán),生成式,高階函數(shù),向量化。3.6.1for循環(huán)(1)遍歷可迭代對象for

i

in

'hello':

print(i)輸出結果:hello3.6Python循環(huán)結構Python中實現(xiàn)循環(huán)結構的幾種方式:for循環(huán),while循環(huán),生成式,高階函數(shù),向量化。3.6.1for循環(huán)(2)單重for循環(huán)#求一個列表中最大的元素l=[1,5,4,6,7,8,2,0]max_l=l[0]for

i

in

l:#直接遍歷列表

max_l=i

if

i>max_l

else

max_lprint(max_l)輸出結果:83.6Python循環(huán)結構Python中實現(xiàn)循環(huán)結構的幾種方式:for循環(huán),while循環(huán),生成式,高階函數(shù),向量化。3.6.1for循環(huán)(2)多重for循環(huán)#打印一個九九乘法表for

i

in

range(1,10):

for

j

in

range(1,i+1):

print(f"{j}x{i}={i*j}",end="\t")

print()3.6Python循環(huán)結構Python中實現(xiàn)循環(huán)結構的幾種方式:for循環(huán),while循環(huán),生成式,高階函數(shù),向量化。3.6.1for循環(huán)(3)多重for循環(huán)輸出結果:1x1=1 1x2=2 2x2=4 1x3=3 2x3=6 3x3=9 1x4=4 2x4=8 3x4=12 4x4=16 1x5=5 2x5=10 3x5=15 4x5=20 5x5=25 1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36 1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49 1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64 1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=813.6Python循環(huán)結構Python中實現(xiàn)循環(huán)結構的幾種方式:for循環(huán),while循環(huán),生成式,高階函數(shù),向量化。3.6.2while循環(huán)while循環(huán)的基本格式如下:while

條件表達式:

條件滿足,執(zhí)行循環(huán)語句3.6Python循環(huán)結構Python中實現(xiàn)循環(huán)結構的幾種方式:for循環(huán),while循環(huán),生成式,高階函數(shù),向量化。3.6.2while循環(huán)(1)計算1-100偶數(shù)和i=0sum_result=0while

i<101:

if

i%2==0:

sum_result+=i

i+=1print('偶數(shù)和為:%s'%sum_resurt)輸出結果:偶數(shù)和為:25503.6Python循環(huán)結構Python中實現(xiàn)循環(huán)結構的幾種方式:for循環(huán),while循環(huán),生成式,高階函數(shù),向量化。3.6.3生成式生成式是一種輕量級的循環(huán)結構,語法結構簡單明了。它可以用于生成列表,集合和字典。(1)單循環(huán)遍歷#求列表全部元素的絕對值l=[1,2,-1,3,0,-2,-3]absl=[i

if

i>0

else-i

for

i

in

l]print(absl)輸出結果:[1,2,1,3,0,2,3]3.6Python循環(huán)結構Python中實現(xiàn)循環(huán)結構的幾種方式:for循環(huán),while循環(huán),生成式,高階函數(shù),向量化。3.6.3生成式生成式是一種輕量級的循環(huán)結構,語法結構簡單明了。它可以用于生成列表,集合和字典。(2)for遍歷+if篩選#篩選序列中大于0的元素l=[1,2,-1,3,0,-2,-3]lbt0=[i

for

i

in

l

if

i>0]print(lbt0)輸出結果:[1,2,3]3.6Python循環(huán)結構Python中實現(xiàn)循環(huán)結構的幾種方式:for循環(huán),while循環(huán),生成式,高階函數(shù),向量化。3.6.3生成式(3)for多重遍歷#求兩個集合中所有元素可能的組合girls={'Lucy','Mary'}boys=['Tom','Jim']couples={(b,g)for

b

in

boys

for

g

in

girls}print(couples)輸出結果:{('Tom','Lucy'),('Jim','Lucy'),('Jim','Mary'),('Tom','Mary')}3.6Python循環(huán)結構Python中實現(xiàn)循環(huán)結構的幾種方式:for循環(huán),while循環(huán),生成式,高階函數(shù),向量化。3.6.4高階函數(shù)高階函數(shù)可以調(diào)用其他函數(shù)作為參數(shù)。常用的高階函數(shù)包括:map,reduce,filter,sorted。(1)map映射import

mathimport

numpy

as

np#求列表中各個元素的平方根l=list(map(math.sqrt,[1,2,3]))print(l)輸出結果:[1.0,1.4142135623730951,1.7320508075688772]3.6Python循環(huán)結構Python中實現(xiàn)循環(huán)結構的幾種方式:for循環(huán),while循環(huán),生成式,高階函數(shù),向量化。3.6.4高階函數(shù)高階函數(shù)可以調(diào)用其他函數(shù)作為參數(shù)。常用的高階函數(shù)包括:map,reduce,filter,sorted。(1)map映射import

mathimport

numpy

as

np#求兩個向量的和s=list(map(np.add,[1,2,3],[3,2,1]))#numpy庫中的add方法print(s)輸出結果:[4,4,4]3.6Python循環(huán)結構Python中實現(xiàn)循環(huán)結構的幾種方式:for循環(huán),while循環(huán),生成式,高階函數(shù),向量化。3.6.4高階函數(shù)高階函數(shù)可以調(diào)用其他函數(shù)作為參數(shù)。常用的高階函數(shù)包括:map,reduce,filter,sorted。(2)reduce降維from

functools

import

reduce#求列表中所有元素的乘積p=reduce(lambda

x,y:x*y,[1,2,3,4])print(p)輸出結果:243.6Python循環(huán)結構Python中實現(xiàn)循環(huán)結構的幾種方式:for循環(huán),while循環(huán),生成式,高階函數(shù),向量化。3.6.4高階函數(shù)高階函數(shù)可以調(diào)用其他函數(shù)作為參數(shù)。常用的高階函數(shù)包括:map,reduce,filter,sorted。(3)filter過濾#過濾出列表中全部正數(shù)l=[1,2,3,-1,-3,0]q=filter(lambda

x:True

if

x>0

else

False,l)print(list(q))輸出結果:[1,2,3]3.6Python循環(huán)結構Python中實現(xiàn)循環(huán)結構的幾種方式:for循環(huán),while循環(huán),生成式,高階函數(shù),向量化。3.6.4高階函數(shù)高階函數(shù)可以調(diào)用其他函數(shù)作為參數(shù)。常用的高階函數(shù)包括:map,reduce,filter,sorted。(4)sorted排序#對列表進行排序a=[5,3,4,2,1]print(sorted(a))輸出結果:[1,2,3,4,5]3.6Python循環(huán)結構Python中實現(xiàn)循環(huán)結構的幾種方式:for循環(huán),while循環(huán),生成式,高階函數(shù),向量化。3.6.5向量化(2)求兩個向量的和from

pandas

import

arraya=[1,2,3]b=[4,5,6]c=array(a)+array(b)print(c)輸出結果:[5,7,9]3.6Python循環(huán)結構Python中實現(xiàn)循環(huán)結構的幾種方式:for循環(huán),while循環(huán),生成式,高階函數(shù),向量化。3.6.6循環(huán)控制break:跳出本層循環(huán)。continue:跳出本次循環(huán),繼續(xù)下一次循環(huán)。pass:無操作。3.6Python循環(huán)結構Python中實現(xiàn)循環(huán)結構的幾種方式:for循環(huán),while循環(huán),生成式,高階函數(shù),向量化。3.6.6循環(huán)控制(1)break語句forjin

range(3):

print('j=',j)

foriin

'helloworld':

print(i,end='')

ifi=='':

break

print('i=',i)輸出結果:j=0helloi=j=1helloi=j=23.6Python循環(huán)結構Python中實現(xiàn)循環(huán)結構的幾種方式:for循環(huán),while循環(huán),生成式,高階函數(shù),向量化。3.6.6循環(huán)控制(2)continue語句forjin

range(3):

print('j=',j)

foriin

'helloworld':

print(i,end='')

ifi=='':

continue

print('i=',i)輸出結果:j=0helloworldi=dj=1helloworldi=dj=2helloworldi=d3.6Python循環(huán)結構Python中實現(xiàn)循環(huán)結構的幾種方式:for循環(huán),while循環(huán),生成式,高階函數(shù),向量化。3.6.6循環(huán)控制(3)pass語句foriin

range(1,20):

ifi%5==0:

print("1到20以內(nèi)的是5的倍數(shù)的整數(shù)依次是:",i)

else:

pass

#pass語句沒有起什么作用,也不會改變程序的流程輸出結果:1到20以內(nèi)的是5的倍數(shù)的整數(shù)依次是:51到20以內(nèi)的是5的倍數(shù)的整數(shù)依次是:101到20以內(nèi)的是5的倍數(shù)的整數(shù)依次是:153.7Python一般函數(shù)函數(shù)是一段可重用的代碼塊,它接受一個或多個輸入?yún)?shù),并執(zhí)行一些操作,最后返回一個結果。函數(shù)可以幫助我們將代碼分解為更小的部分,使其更易于理解、測試和維護。3.7.1定義函數(shù)使用def關鍵字來定義一個函數(shù),向python指出了函數(shù)名,在括號中可以給出相關信息。后面的所有縮進行構成了函數(shù)體。要使用某個函數(shù),可以調(diào)用它。#定義函數(shù)def

hello():

print("helloword")

#調(diào)用函數(shù)hello()輸出結果:helloword3.7Python一般函數(shù)3.7.2向函數(shù)傳遞信息def

hello(name):

"""顯示簡單的問候語"""

print("hello,"+name+"!")

hello('chloe')輸出結果:hello,chloe!3.7Python一般函數(shù)3.7.3實參和形參在函數(shù)hello()的定義中,name是一個形參(函數(shù)完成其工作所需要的一項信息)。在代碼hello('chloe')中,值'chloe'是一個實參。3.7Python一般函數(shù)3.7.4傳遞實參(1)位置實參位置實參要求實參的順序與形參的順序相同。def

pet_info(animal_type,name):

"""顯示寵物的信息"""

print("Ihavea"+animal_type+".")

print("My"+animal_type+"'snameis"+name+".")

pet_info("cat","harry")輸出結果:Ihaveacat.3.7Python一般函數(shù)3.7.4傳遞實參(2)關鍵字實參關鍵字實參是傳遞給函數(shù)的名稱-值對。直接在實參中將名稱和值關聯(lián)起來,而不用考慮函數(shù)調(diào)用中的實參順序。def

pet_info(animal_type,name):

"""顯示寵物的信息"""

print("Ihavea"+animal_type+".")

print("My"+animal_type+"'snameis"+name+".")

pet_info(animal_type="cat",name="harry")輸出結果:Ihaveacat.Mycat'snameisharry.3.7Python一般函數(shù)3.7.4傳遞實參(3)默認參數(shù)在編寫函數(shù)時,給每一個形參指定默認值。def

pet_info(name,animal_type='dog'):

"""顯示寵物的信息"""

print("Ihavea"+animal_type+".")

print("My"+animal_type+"'snameis"+name+".")

pet_info(name="harry")輸出結果:Ihaveadog.Mydog'snameisharry.3.7Python一般函數(shù)3.7.4傳遞實參(4)傳遞任意數(shù)量的實參*args用于傳遞任意數(shù)量的位置參數(shù),它將所有位置參數(shù)打包成一個元組。**kwargs用于傳遞任意數(shù)量的關鍵字參數(shù),它將所有關鍵字參數(shù)打包成一個字典。def

make_pizza(*toppings,**other):

"""打印顧客點的所有配料"""

print(toppings,other)

make_pizza('蘑菇','青椒',place='桂林',street='學院路餐館')輸出結果:('蘑菇','青椒'){'place':'桂林','street':'學院

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論