21天學通Python筆記(一)

一、

如果含中文:

1、要不在文件頭加上:   # coding=gbk

2、要不文件改爲         以UTF-8無BOM格式編碼

二、

python區分大小寫

python可以單雙引號相互嵌套而不用轉義

python程序要求最好是全部使用縮進來分層

行尾的":"表示下一行代碼縮進的開始,如果縮進行只有一條語句,也可以直接寫在“:”之後的

處於同一級的代碼所儘量要保持一致

python的編程規範指出:縮進最好採用空格的形式,每一層最好向右縮進4個空格

單行註釋採用#

塊註釋使用三個單引號或者三個雙引號包圍程序即可

python也可以將兩條語句書寫在同一行而中間用分號隔開的

如果一行寫不下可以像C一樣使用'\',如果在圓括號中,例如很多參數\也是可以去掉的,和C一樣

python算式中的乘號不可以省略

要比較兩個浮點數是否相等,應看他們的差是否小於一個極小的數即可

三、

字符串可以通過序號來取出其中某個字符,如:'abcde'[1]取得的值爲b。

python字符串是可以用"+"、"*"進行運算的。

string的split函數返回以指定的字符將字符串分割成列表形式返回,但並不改變原字符串 。

string的join函數將原字符串插入參數字符串中的每兩個字符之間,如果參數字符串只有一個字符,那麼返回參數字符串。同樣join不改變原字符串,只是返回一個新的字符串。

/運算符的運算結果爲浮點數,即使兩個整數相除。

//爲整除運算符

原始字符串就是在字符串前以r或R作爲標誌,這種表示法常用來在windows系統下表示路徑中的分隔符如r'c:\windows\system',原始字符串不得以"\"結尾

python字符串格式化:   print("i am a %s.", % "programer")

python中默認的都是utf-8編碼字符串,在網絡上發送字符串時要求必須轉換爲字節串(bytes)形式,那麼就要是用字符串的encode()方法,它返回的是字節串(bytes),其形式如下:

encode(encoding='utf-8', errors='strict'), encoding 默認編碼方式爲utf-8, 也可以使用gbk、gb2312等方式編碼,編碼和解碼所指定的編碼類型應該相同,這樣才能正確還原字符串。

在python中"="作用是將對象引用與內存中某對象進行綁定,如果對象已經存在,就簡單的進行綁定,以便引用右邊的對象;若對象不存在就由“=”操作符創建對象並綁定

在任何時刻,某個對象引用都可以重新引用一個不同(類型)的對象

python會在運行時執行類型檢查的,一旦不能運算會引發錯誤

列表支持加法運算、乘法運算

元組可以看成是一種特殊的列表,與列表不同的是元組一旦建立就不能改變,也可以通過序號來引用其中的元素

字典中通過鍵來訪問成員,而不能通過其位置來訪問該成員

python中的邏輯假包括:None、False、0、''(空字符串)、()、[]、{}其餘任何值都視爲真

python中的邏輯運算符包括:and、or、not

not的結果只能爲True或者False

or爲“或”運算符,如果第一個操作數爲真則直接返回第一個操作數,如果爲假則返回第二個操作數或表達式的值

and爲“與”運算符,如果第一個操作數爲假則直接返回第一個操作數,如果爲真則返回第二個操作數或表達式的值

is 和 is not 都是二元操作符,用於判斷左端與右端對象引用是否指向同一個對象

in和not in稱爲成員操作符,用於檢查某個數據是否存在於某包含多個成員的數據類型之中,成員操作符對於字典來說檢查的是鍵成員而不是值成員

序列表示索引爲非負整數的有序對象集合,包括前面所介紹的字符串、列表、和元組。字符串是字符的序列,列表和元組則是任意Python數據類型或對象的序列。字符串也是不可以變的,修改字符串就是重新創造了一個字符串

序列的切片是指用形如[start:end:step]來取序列中的部分成員數據項,意思是從序列中start序號開始到end前一個結束,每隔step個取一個成員,切片所取的元素從start開始,到end前一個結束,不包括序號爲end的元素

sum(s[,start])   返回s中各項的和

all(s)                s中所有項爲真,則返回真,否則返回假

any(s)              s中有一項爲真,則返回真,否則返回假

四、

if語句不帶括號,末尾用 : 結束,else語句後面也是 : 結束 elif 同樣,嵌套沒有什麼特別點。儘量少使用嵌套,難以閱讀。

if語句可以使用在一個單語句之中,實現三元運算符,基本形式如下:

<表達式1> if <條件> else <表達式2> 其語義是當條件爲真時取得表達式1的值,否則取得表達式2的值

a = None

b = 3

x = b if a is not None else 0當a的值不爲None時,x取值爲3,否則x取值爲0

for語句不帶括號,末尾用 : 結束。

for i in [1,2,3,4,5]:

    print(i, "的平方是:", i*i)

else:

    print('循環結束!')

可以在for語句中使用continue和break,後面不用帶冒號,和C的用法類似

adct = {'apple':15, 'banana':20, 'pear':35}

for key,value in adct.items():

    print(key, ':', value)

for key in adct.keys():

    print(key)

for value in adct.values():

    print(value)

for循環經常使用到的range函數有三個參數,第一個爲初始值,第二個爲最大值不包含該值,第三個爲每次遞加的值。

enumerate 函數用於遍歷序列中的元素的下標以及它們

a=[1,2,3]

for i, d in enumerate(a):

    print(i,":",d)

0:1

1:2

2:3

zip函數接受任意多個(包括0個和1個)序列作爲參數,返回一個tuple列表。

b = (2,4,6)

for i,j in zip(a,b):

    print(i,":", j)

1:2

2:4

3:6

因爲字典既有鍵又有值,在遍歷時不能直接對字典進行遍歷二十通過字典的額items()、keys()、values()等方法分別遍歷其鍵和值、鍵、值。如果同時遍歷鍵和值,在遍歷時可以使用兩個循環變量來分別接收鍵和值。

range()函數並不是在調用時一次生成整個序列,而是遍歷一次才產生一個值,以減少內存的佔用,其本質是一個迭代器。

while循環不像for循環可以遍歷某一對象的集合

while循環不帶括號,末尾用 : 結束,也可以和for一樣用else來判斷循環結束的時候執行什麼。

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

total = len(alst)

i = 0

while i < total:

    print(i, "的平方是:", i * i)

    i = i + i

else

    print('循環結束!')

結果打印出0到4的平方。

推導,使用原來序列來生成新的序列的一種方式

>>>a = [1,2,3,4]

>>>[2*i for i in a]

[2, 4, 6, 8]

>>>b = ['a', 'b', 'c']

>>>{k:v for k,v in zip(b, a)}

{'b':2, 'c':3, 'a':1}

>>>[2*i for i in a if i % 3 != 0]

[2, 4, 8]

>>> a = [1,2,3,4]

>>> [5+i for i in a if i % 3 != 0]

[6, 7, 9]

Python內置了幾種常用的迭代函數,既方便又實用。

enumerate(seq) 編號迭代

sorted(seq)排序迭代

reversed(seq)反轉迭代

zip(seq1,seq2,...)並行迭代

編號迭代在迭代時既返回序列中的元素,又返回該元素在序列中的編號(編號從0開始),for語句進行編號迭代時,應使用兩個循環變量分別接收編號和元素的值。

排序迭代的作用是使得在for的遍歷時先遍歷序列中的較小的值,後遍歷序列中較大的值,當然這要求序列中的數據可以是排序的同類數據。只需要一個變量即可

反轉迭代就是將迭代序列中的元素從尾至頭進行遍歷

並行迭代也是一種很使用的迭代函數它在遍歷時是同時遍歷函數中給出的seq1、seq2等序列中同一序號的元素

並行迭代函數中序列值的長度不一致時,只遍歷到最短的序列的長度

典型的列表推導基本形式如下:

[ <i 相關表達式> for i in aiterator]

aiterator是指一個可遍歷的對象,比如列表,元組,也可以是range()函數。其語義爲用循環變量i去遍歷aiterator,並將i相關表達式的值放入一個列表中。

字典也是可以實現其推導式語法的,其基本格式如下:

{key_exp:value_exp for key_exp, value_exp in aiterator}

列表推導式和字典推導式不僅可以對遍歷的元素進行全部處理,還可以使用if語句實現有選擇的處理遍歷序列中的元素其基本形式如下:

[ <i 相關表達式> for i in aiterator if <條件>]

{key_exp:value_exp for key_exp, value_exp in aiterator if<條件>}

如果要獲得一個1~10中所有數的平方,且平方值爲偶數的一個列表,就可以使用如下代碼來實現:

square_odd = [i**i for i in range(1, 11) if i**i %2 == 1]

如果在推導式中的求值表達式或條件表達式中應用函數,則可以構造更加複雜的推導式來實現對序列中的數據進行批量的處理(這也常被稱爲聲明式編程)。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章