1. 程式人生 > >菜鳥教程 Python 手記 1

菜鳥教程 Python 手記 1

報錯信息 數據類型 字符串表 ring max last pda 每次 none

Python是一種解釋型、面向對象、動態數據類型的高級程序設計語言。

編碼

編碼默認情況下,Python 3 源碼文件以 UTF-8 編碼,所有字符串都是 unicode 字符串。 當然你也可以為源碼文件指定不同的編碼:

# -*- coding: cp-1252 -*-

多行語句

Python 通常是一行寫完一條語句,但如果語句很長,我們可以使用反斜杠(\)來實現多行語句,例如:

total = item_one +         item_two +         item_three

在 [], {}, 或 () 中的多行語句,不需要使用反斜杠(\),例如:

total = [‘item_one‘, ‘item_two‘, ‘item_three‘,
        ‘item_four‘, ‘item_five‘]

同一行顯示多條語句

Python可以在同一行中使用多條語句,語句之間使用分號(;)分割,以下是一個簡單的實例:

#!/usr/bin/python3

import sys; x = ‘runoob‘; sys.stdout.write(x + ‘\n‘)

執行以上代碼,輸入結果為:

$ python3 test.py
runoob


多個變量賦值

a = b = c = 1
a, b, c = 1, 2, "runoob"


數值計算

>>>5 + 4  # 加法
9
>>> 4.3 - 2 # 減法
2.3
>>> 3 * 7  # 乘法
21
>>> 2 / 4  # 除法,得到一個浮點數
0.5
>>> 2 // 4 # 除法,得到一個整數
0
>>> 17 % 3 # 取余 
2
>>> 2 ** 5 # 乘方
32

  

Python還支持復數,復數由實數部分和虛數部分構成,可以用a + bj,或者complex(a,b)表示, 復數的實部a和虛部b都是浮點型

Set(集合)

集合(set)是一個無序不重復元素的序列。

基本功能是進行成員關系測試和刪除重復元素。

可以使用大括號 { } 或者 set() 函數創建集合,註意:創建一個空集合必須用 set() 而不是 { },因為 { } 是用來創建一個空字典。

實例:

#!/usr/bin/python3
 
student = {‘Tom‘, ‘Jim‘, ‘Mary‘, ‘Tom‘, ‘Jack‘, ‘Rose‘}
 
print(student)   # 輸出集合,重復的元素被自動去掉
 
# 成員測試
if(‘Rose‘ in student) :
    print(‘Rose 在集合中‘)
else :
    print(‘Rose 不在集合中‘)
 
 
# set可以進行集合運算
a = set(‘abracadabra‘)
b = set(‘alacazam‘)
 
print(a)
 
print(a - b)     # a和b的差集
 
print(a | b)     # a和b的並集
 
print(a & b)     # a和b的交集
 
print(a ^ b)     # a和b中不同時存在的元素

以上輸出結果:

{‘Mary‘, ‘Jim‘, ‘Rose‘, ‘Jack‘, ‘Tom‘}
Rose 在集合中
{‘b‘, ‘a‘, ‘c‘, ‘r‘, ‘d‘}
{‘b‘, ‘d‘, ‘r‘}
{‘l‘, ‘r‘, ‘a‘, ‘c‘, ‘z‘, ‘m‘, ‘b‘, ‘d‘}
{‘a‘, ‘c‘}
{‘l‘, ‘r‘, ‘z‘, ‘m‘, ‘b‘, ‘d‘}

  

Python數據類型轉換

有時候,我們需要對數據內置的類型進行轉換,數據類型的轉換,你只需要將數據類型作為函數名即可。

以下幾個內置的函數可以執行數據類型之間的轉換。這些函數返回一個新的對象,表示轉換的值。

函數描述

int(x [,base])

將x轉換為一個整數

long(x [,base] )

將x轉換為一個長整數

float(x)

將x轉換到一個浮點數

complex(real [,imag])

創建一個復數

str(x)

將對象 x 轉換為字符串

repr(x)

將對象 x 轉換為表達式字符串

eval(str)

用來計算在字符串中的有效Python表達式,並返回一個對象

tuple(s)

將序列 s 轉換為一個元組

list(s)

將序列 s 轉換為一個列表

set(s)

轉換為可變集合

dict(d)

創建一個字典。d 必須是一個序列 (key,value)元組。

frozenset(s)

轉換為不可變集合

chr(x)

將一個整數轉換為一個字符

unichr(x)

將一個整數轉換為Unicode字符

ord(x)

將一個字符轉換為它的整數值

hex(x)

將一個整數轉換為一個十六進制字符串

oct(x)

將一個整數轉換為一個八進制字符串

腳本式編程

將如下代碼拷貝至 hello.py文件中:

print ("Hello, Python!");

通過以下命令執行該腳本:

python3 hello.py

輸出結果為:

Hello, Python!

在Linux/Unix系統中,你可以在腳本頂部添加以下命令讓Python腳本可以像SHELL腳本一樣可直接執行:

#! /usr/bin/env python3

然後修改腳本權限,使其有執行權限,命令如下:

$ chmod +x hello.py

執行以下命令:

./hello.py

輸出結果為:

Hello, Python!



Python算術運算符

以下假設變量a為10,變量b為21:

運算符描述實例
+ 加 - 兩個對象相加 a + b 輸出結果 31
- 減 - 得到負數或是一個數減去另一個數 a - b 輸出結果 -11
* 乘 - 兩個數相乘或是返回一個被重復若幹次的字符串 a * b 輸出結果 210
/ 除 - x 除以 y b / a 輸出結果 2.1
% 取模 - 返回除法的余數 b % a 輸出結果 1
** 冪 - 返回x的y次冪 a**b 為10的21次方
// 取整除 - 返回商的整數部分 9//2 輸出結果 4 , 9.0//2.0 輸出結果 4.0

Python位運算符

按位運算符是把數字看作二進制來進行計算的。Python中的按位運算法則如下:

下表中變量 a 為 60,b 為 13二進制格式如下:

a = 0011 1100

b = 0000 1101

-----------------

a&b = 0000 1100

a|b = 0011 1101

a^b = 0011 0001

~a  = 1100 0011

  

運算符描述實例
& 按位與運算符:參與運算的兩個值,如果兩個相應位都為1,則該位的結果為1,否則為0 (a & b) 輸出結果 12 ,二進制解釋: 0000 1100
| 按位或運算符:只要對應的二個二進位有一個為1時,結果位就為1。 (a | b) 輸出結果 61 ,二進制解釋: 0011 1101
^ 按位異或運算符:當兩對應的二進位相異時,結果為1 (a ^ b) 輸出結果 49 ,二進制解釋: 0011 0001
~ 按位取反運算符:對數據的每個二進制位取反,即把1變為0,把0變為1。~x 類似於 -x-1 (~a ) 輸出結果 -61 ,二進制解釋: 1100 0011, 在一個有符號二進制數的補碼形式。
<< 左移動運算符:運算數的各二進位全部左移若幹位,由"<<"右邊的數指定移動的位數,高位丟棄,低位補0。 a << 2 輸出結果 240 ,二進制解釋: 1111 0000
>> 右移動運算符:把">>"左邊的運算數的各二進位全部右移若幹位,">>"右邊的數指定移動的位數

Python 支持三種不同的數值類型:

  • 整型(Int) - 通常被稱為是整型或整數,是正或負整數,不帶小數點。Python3 整型是沒有限制大小的,可以當作 Long 類型使用,所以 Python3 沒有 Python2 的 Long 類型。
  • 浮點型(float) - 浮點型由整數部分與小數部分組成,浮點型也可以使用科學計數法表示(2.5e2 = 2.5 x 102 = 250)
  • 復數( (complex)) - 復數由實數部分和虛數部分構成,可以用a + bj,或者complex(a,b)表示, 復數的實部a和虛部b都是浮點型。

Python 數字類型轉換

有時候,我們需要對數據內置的類型進行轉換,數據類型的轉換,你只需要將數據類型作為函數名即可。

  • int(x) 將x轉換為一個整數。

  • float(x) 將x轉換到一個浮點數。

  • complex(x) 將x轉換到一個復數,實數部分為 x,虛數部分為 0。

  • complex(x, y) 將 x 和 y 轉換到一個復數,實數部分為 x,虛數部分為 y。x 和 y 是數字表達式。

數學函數

函數返回值 ( 描述 )
abs(x) 返回數字的絕對值,如abs(-10) 返回 10
ceil(x) 返回數字的上入整數,如math.ceil(4.1) 返回 5

cmp(x, y)

如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。 Python 3 已廢棄 。使用 使用 (x>y)-(x<y) 替換。
exp(x) 返回e的x次冪(ex),如math.exp(1) 返回2.718281828459045
fabs(x) 返回數字的絕對值,如math.fabs(-10) 返回10.0
floor(x) 返回數字的下舍整數,如math.floor(4.9)返回 4
log(x) 如math.log(math.e)返回1.0,math.log(100,10)返回2.0
log10(x) 返回以10為基數的x的對數,如math.log10(100)返回 2.0
max(x1, x2,...) 返回給定參數的最大值,參數可以為序列。
min(x1, x2,...) 返回給定參數的最小值,參數可以為序列。
modf(x) 返回x的整數部分與小數部分,兩部分的數值符號與x相同,整數部分以浮點型表示。
pow(x, y) x**y 運算後的值。
round(x [,n]) 返回浮點數x的四舍五入值,如給出n值,則代表舍入到小數點後的位數。
sqrt(x) 返回數字x的平方根,數字可以為負數,返回類型為實數,如math.sqrt(4)返回 2+0j

隨機數函數

隨機數可以用於數學,遊戲,安全等領域中,還經常被嵌入到算法中,用以提高算法效率,並提高程序的安全性。

Python包含以下常用隨機數函數:

函數描述
choice(seq) 從序列的元素中隨機挑選一個元素,比如random.choice(range(10)),從0到9中隨機挑選一個整數。
randrange ([start,] stop [,step]) 從指定範圍內,按指定基數遞增的集合中獲取一個隨機數,基數缺省值為1
random() 隨機生成下一個實數,它在[0,1)範圍內。
seed([x]) 改變隨機數生成器的種子seed。如果你不了解其原理,你不必特別去設定seed,Python會幫你選擇seed。
shuffle(lst) 將序列的所有元素隨機排序
uniform(x, y) 隨機生成下一個實數,它在[x,y]範圍內

三角函數

Python包括以下三角函數:

函數描述
acos(x) 返回x的反余弦弧度值。
asin(x) 返回x的反正弦弧度值。
atan(x) 返回x的反正切弧度值。
atan2(y, x) 返回給定的 X 及 Y 坐標值的反正切值。
cos(x) 返回x的弧度的余弦值。
hypot(x, y) 返回歐幾裏德範數 sqrt(x*x + y*y)。
sin(x) 返回的x弧度的正弦值。
tan(x) 返回x弧度的正切值。
degrees(x) 將弧度轉換為角度,如degrees(math.pi/2) , 返回90.0
radians(x) 將角度轉換為弧度

數學常量

常量描述
pi 數學常量 pi(圓周率,一般以π來表示)
e 數學常量 e,e即自然常數(自然常數)。

Python轉義字符

在需要在字符中使用特殊字符時,python用反斜杠(\)轉義字符。如下表:

轉義字符描述
\(在行尾時) 續行符
\\ 反斜杠符號
\‘ 單引號
\" 雙引號
\a 響鈴
\b 退格(Backspace)
\e 轉義
\000
\n 換行
\v 縱向制表符
\t 橫向制表符
\r 回車
\f 換頁
\oyy 八進制數,yy代表的字符,例如:\o12代表換行
\xyy 十六進制數,yy代表的字符,例如:\x0a代表換行
\other

python字符串格式化符號:

<tbody

符 號描述
%c 格式化字符及其ASCII碼
%s 格式化字符串
%d 格式化整數
%u 格式化無符號整型
%o 格式化無符號八進制數
%x 格式化無符號十六進制數
%X 格式化無符號十六進制數(大寫)
%f 格式化浮點數字,可指定小數點後的精度
%e 用科學計數法格式化浮點數
%E 作用同%e,用科學計數法格式化浮點數
%g %f和%e的簡寫
%G %f 和 %E 的簡寫
%p 用十六進制數格式化變量的地址

Python 的字符串內建函數

Python 的字符串常用內建函數如下:

序號方法及描述
1

capitalize()
將字符串的第一個字符轉換為大寫

2

center(width, fillchar)


返回一個指定的寬度 width 居中的字符串,fillchar 為填充的字符,默認為空格。
3

count(str, beg= 0,end=len(string))


返回 str 在 string 裏面出現的次數,如果 beg 或者 end 指定則返回指定範圍內 str 出現的次數
4

bytes.decode(encoding="utf-8", errors="strict")


Python3 中沒有 decode 方法,但我們可以使用 bytes 對象的 decode() 方法來解碼給定的 bytes 對象,這個 bytes 對象可以由 str.encode() 來編碼返回。
5

encode(encoding=‘UTF-8‘,errors=‘strict‘)


以 encoding 指定的編碼格式編碼字符串,如果出錯默認報一個ValueError 的異常,除非 errors 指定的是‘ignore‘或者‘replace‘
6

endswith(suffix, beg=0, end=len(string))
檢查字符串是否以 obj 結束,如果beg 或者 end 指定則檢查指定的範圍內是否以 obj 結束,如果是,返回 True,否則返回 False.

7

expandtabs(tabsize=8)


把字符串 string 中的 tab 符號轉為空格,tab 符號默認的空格數是 8 。
8

find(str, beg=0 end=len(string))


檢測 str 是否包含在字符串中,如果指定範圍 beg 和 end ,則檢查是否包含在指定範圍內,如果包含返回開始的索引值,否則返回-1
9

index(str, beg=0, end=len(string))


跟find()方法一樣,只不過如果str不在字符串中會報一個異常.
10

isalnum()


如果字符串至少有一個字符並且所有字符都是字母或數字則返 回 True,否則返回 False
11

isalpha()


如果字符串至少有一個字符並且所有字符都是字母則返回 True, 否則返回 False
12

isdigit()


如果字符串只包含數字則返回 True 否則返回 False..
13

islower()


如果字符串中包含至少一個區分大小寫的字符,並且所有這些(區分大小寫的)字符都是小寫,則返回 True,否則返回 False
14

isnumeric()


如果字符串中只包含數字字符,則返回 True,否則返回 False
15

isspace()


如果字符串中只包含空白,則返回 True,否則返回 False.
16

istitle()


如果字符串是標題化的(見 title())則返回 True,否則返回 False
17

isupper()


如果字符串中包含至少一個區分大小寫的字符,並且所有這些(區分大小寫的)字符都是大寫,則返回 True,否則返回 False
18

join(seq)


以指定字符串作為分隔符,將 seq 中所有的元素(的字符串表示)合並為一個新的字符串
19

len(string)


返回字符串長度
20

ljust(width[, fillchar])


返回一個原字符串左對齊,並使用 fillchar 填充至長度 width 的新字符串,fillchar 默認為空格。
21

lower()


轉換字符串中所有大寫字符為小寫.
22

lstrip()


截掉字符串左邊的空格或指定字符。
23

maketrans()


創建字符映射的轉換表,對於接受兩個參數的最簡單的調用方式,第一個參數是字符串,表示需要轉換的字符,第二個參數也是字符串表示轉換的目標。
24

max(str)


返回字符串 str 中最大的字母。
25

min(str)


返回字符串 str 中最小的字母。
26

replace(old, new [, max])


把 將字符串中的 str1 替換成 str2,如果 max 指定,則替換不超過 max 次。
27

rfind(str, beg=0,end=len(string))


類似於 find()函數,不過是從右邊開始查找.
28

rindex( str, beg=0, end=len(string))


類似於 index(),不過是從右邊開始.
29

rjust(width,[, fillchar])


返回一個原字符串右對齊,並使用fillchar(默認空格)填充至長度 width 的新字符串
30

rstrip()


刪除字符串字符串末尾的空格.
31

split(str="", num=string.count(str))


num=string.count(str)) 以 str 為分隔符截取字符串,如果 num 有指定值,則僅截取 num 個子字符串
32

splitlines([keepends])


按照行(‘\r‘, ‘\r\n‘, \n‘)分隔,返回一個包含各行作為元素的列表,如果參數 keepends 為 False,不包含換行符,如果為 True,則保留換行符。
33

startswith(str, beg=0,end=len(string))


檢查字符串是否是以 obj 開頭,是則返回 True,否則返回 False。如果beg 和 end 指定值,則在指定範圍內檢查。
34

strip([chars])


在字符串上執行 lstrip()和 rstrip()
35

swapcase()


將字符串中大寫轉換為小寫,小寫轉換為大寫
36

title()


返回"標題化"的字符串,就是說所有單詞都是以大寫開始,其余字母均為小寫(見 istitle())
37

translate(table, deletechars="")


根據 str 給出的表(包含 256 個字符)轉換 string 的字符, 要過濾掉的字符放到 deletechars 參數中
38

upper()


轉換字符串中的小寫字母為大寫
39

zfill (width)


返回長度為 width 的字符串,原字符串右對齊,前面填充0
40

isdecimal()


檢查字符串是否只包含十進制字符,如果是返回 true,否則返回 false。

Python列表函數&方法

Python包含以下函數:

序號函數
1 len(list)
列表元素個數
2 max(list)
返回列表元素最大值
3 min(list)
返回列表元素最小值
4 list(seq)
將元組轉換為列表

Python包含以下方法:

序號方法
1 list.append(obj)
在列表末尾添加新的對象
2 list.count(obj)
統計某個元素在列表中出現的次數
3 list.extend(seq)
在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表)
4 list.index(obj)
從列表中找出某個值第一個匹配項的索引位置
5 list.insert(index, obj)
將對象插入列表
6 list.pop(obj=list[-1])
移除列表中的一個元素(默認最後一個元素),並且返回該元素的值
7 list.remove(obj)
移除列表中某個值的第一個匹配項
8 list.reverse()
反向列表中元素
9 list.sort([func])
對原列表進行排序
10 list.clear()
清空列表
11 list.copy()
復制列表

字典內置函數&方法

Python字典包含了以下內置函數:

序號函數及描述實例
1 len(dict)
計算字典元素個數,即鍵的總數。
>>> dict = {‘Name‘: ‘Runoob‘, ‘Age‘: 7, ‘Class‘: ‘First‘}
>>> len(dict)
3
2 str(dict)
輸出字典,以可打印的字符串表示。
>>> dict = {‘Name‘: ‘Runoob‘, ‘Age‘: 7, ‘Class‘: ‘First‘}
>>> str(dict)
"{‘Name‘: ‘Runoob‘, ‘Class‘: ‘First‘, ‘Age‘: 7}"
3 type(variable)
返回輸入的變量類型,如果變量是字典就返回字典類型。
>>> dict = {‘Name‘: ‘Runoob‘, ‘Age‘: 7, ‘Class‘: ‘First‘}
>>> type(dict)
<class ‘dict‘>

Python字典包含了以下內置方法:

序號函數及描述
1 radiansdict.clear()
刪除字典內所有元素
2 radiansdict.copy()
返回一個字典的淺復制
3 radiansdict.fromkeys()
創建一個新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應的初始值
4 radiansdict.get(key, default=None)
返回指定鍵的值,如果值不在字典中返回default值
5 key in dict
如果鍵在字典dict裏返回true,否則返回false
6 radiansdict.items()
以列表返回可遍歷的(鍵, 值) 元組數組
7 radiansdict.keys()
以列表返回一個字典所有的鍵
8 radiansdict.setdefault(key, default=None)
和get()類似, 但如果鍵不存在於字典中,將會添加鍵並將值設為default
9 radiansdict.update(dict2)
把字典dict2的鍵/值對更新到dict裏
10 radiansdict.values()
以列表返回字典中的所有值
11 pop(key[,default])
刪除字典給定鍵 key 所對應的值,返回值為被刪除的值。key值必須給出。 否則,返回default值。
12 popitem()
隨機返回並刪除字典中的一對鍵和值(一般刪除末尾對)。

end 關鍵字

關鍵字end可以用於將結果輸出到同一行,或者在輸出的末尾添加不同的字符,實例如下:

#!/usr/bin/python3

# Fibonacci series: 斐波納契數列
# 兩個元素的總和確定了下一個數
a, b = 0, 1
while b < 1000:
    print(b, end=‘,‘)
    a, b = b, a+b

執行以上程序,輸出結果為:

1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,


break和continue語句及循環中的else子句

break 語句可以跳出 for 和 while 的循環體。如果你從 for 或 while 循環中終止,任何對應的循環 else 塊將不執行。 實例如下:

實例

#!/usr/bin/python3 for letter in Runoob: # 第一個實例 if letter == b: break print (當前字母為 :, letter) var = 10 # 第二個實例 while var > 0: print (當期變量值為 :, var) var = var -1 if var == 5: break print ("Good bye!")

執行以上腳本輸出結果為:

當前字母為 : R
當前字母為 : u
當前字母為 : n
當前字母為 : o
當前字母為 : o
當期變量值為 : 10
當期變量值為 : 9
當期變量值為 : 8
當期變量值為 : 7
當期變量值為 : 6
Good bye!

continue語句被用來告訴Python跳過當前循環塊中的剩余語句,然後繼續進行下一輪循環。

實例

#!/usr/bin/python3 for letter in Runoob: # 第一個實例 if letter == o: # 字母為 o 時跳過輸出 continue print (當前字母 :, letter) var = 10 # 第二個實例 while var > 0: var = var -1 if var == 5 : # 變量為 5 時跳過輸出 continue print (當前變量值 :, var) print ("Good bye!")

執行以上腳本輸出結果為:

當前字母 : R
當前字母 : u
當前字母 : n
當前字母 : b
當前變量值 : 9
當前變量值 : 8
當前變量值 : 7
當前變量值 : 6
當前變量值 : 4
當前變量值 : 3
當前變量值 : 2
當前變量值 : 1
當前變量值 : 0
Good bye!

生成器

在 Python 中,使用了 yield 的函數被稱為生成器(generator)。

跟普通函數不同的是,生成器是一個返回叠代器的函數,只能用於叠代操作,更簡單點理解生成器就是一個叠代器。

在調用生成器運行的過程中,每次遇到 yield 時函數會暫停並保存當前所有的運行信息,返回yield的值。並在下一次執行 next()方法時從當前位置繼續運行。

以下實例使用 yield 實現斐波那契數列:

實例(Python 3.0+)

#!/usr/bin/python3
 
import sys
 
def fibonacci(n): # 生成器函數 - 斐波那契
    a, b, counter = 0, 1, 0
    while True:
        if (counter > n): 
            return
        yield a
        a, b = b, a + b
        counter += 1
f = fibonacci(10) # f 是一個叠代器,由生成器返回生成
 
while True:
    try:
        print (next(f), end=" ")
    except StopIteration:
        sys.exit()



0 1 1 2 3 5 8 13 21 34 55

  

global 和 nonlocal關鍵字

當內部作用域想修改外部作用域的變量時,就要用到global和nonlocal關鍵字了。

以下實例修改全局變量 num:

#!/usr/bin/python3

num = 1
def fun1():
    global num  # 需要使用 global 關鍵字聲明
    print(num) 
    num = 123
    print(num)
fun1()

  

以上實例輸出結果:

1
123

如果要修改嵌套作用域(enclosing 作用域,外層非全局作用域)中的變量則需要 nonlocal 關鍵字了,如下實例:

#!/usr/bin/python3
 
def outer():
    num = 10
    def inner():
        nonlocal num   # nonlocal關鍵字聲明
        num = 100
        print(num)
    inner()
    print(num)
outer()

  

以上實例輸出結果:

100
100

另外有一種特殊情況,假設下面這段代碼被運行:

#!/usr/bin/python3
 
a = 10
def test():
    a = a + 1
    print(a)
test()

  

以上程序執行,報錯信息如下:

Traceback (most recent call last):
  File "test.py", line 7, in <module>
    test()
  File "test.py", line 5, in test
    a = a + 1
UnboundLocalError: local variable ‘a‘ referenced before assignment

  

錯誤信息為局部作用域引用錯誤,因為 test 函數中的 a 使用的是局部,未定義,無法修改。

列表

Python中列表是可變的,這是它區別於字符串和元組的最重要的特點,一句話概括即:列表可以修改,而字符串和元組不能。

以下是 Python 中列表的方法:

方法描述
list.append(x) 把一個元素添加到列表的結尾,相當於 a[len(a):] = [x]。
list.extend(L) 通過添加指定列表的所有元素來擴充列表,相當於 a[len(a):] = L。
list.insert(i, x) 在指定位置插入一個元素。第一個參數是準備插入到其前面的那個元素的索引,例如 a.insert(0, x) 會插入到整個列表之前,而 a.insert(len(a), x) 相當於 a.append(x) 。
list.remove(x) 刪除列表中值為 x 的第一個元素。如果沒有這樣的元素,就會返回一個錯誤。
list.pop([i]) 從列表的指定位置刪除元素,並將其返回。如果沒有指定索引,a.pop()返回最後一個元素。元素隨即從列表中被刪除。(方法中 i 兩邊的方括號表示這個參數是可選的,而不是要求你輸入一對方括號,你會經常在 Python 庫參考手冊中遇到這樣的標記。)
list.clear() 移除列表中的所有項,等於del a[:]。
list.index(x) 返回列表中第一個值為 x 的元素的索引。如果沒有匹配的元素就會返回一個錯誤。
list.count(x) 返回 x 在列表中出現的次數。
list.sort() 對列表中的元素進行排序。
list.reverse() 倒排列表中的元素。
list.copy() 返回列表的淺復制,等於a[:]。

下面示例演示了列表的大部分方法:

>>> a = [66.25, 333, 333, 1, 1234.5]
>>> print(a.count(333), a.count(66.25), a.count(‘x‘))
2 1 0
>>> a.insert(2, -1)
>>> a.append(333)
>>> a
[66.25, 333, -1, 333, 1, 1234.5, 333]
>>> a.index(333)
1
>>> a.remove(333)
>>> a
[66.25, -1, 333, 1, 1234.5, 333]
>>> a.reverse()
>>> a
[333, 1234.5, 1, 333, -1, 66.25]
>>> a.sort()
>>> a
[-1, 1, 66.25, 333, 333, 1234.5]

  

註意:類似 insert, remove 或 sort 等修改列表的方法沒有返回值。

遍歷技巧

在字典中遍歷時,關鍵字和對應的值可以使用 items() 方法同時解讀出來:

>>> knights = {‘gallahad‘: ‘the pure‘, ‘robin‘: ‘the brave‘}
>>> for k, v in knights.items():
...     print(k, v)
...
gallahad the pure
robin the brave

  

在序列中遍歷時,索引位置和對應值可以使用 enumerate() 函數同時得到:

>>> for i, v in enumerate([‘tic‘, ‘tac‘, ‘toe‘]):
...     print(i, v)
...
0 tic
1 tac
2 toe

  

同時遍歷兩個或更多的序列,可以使用 zip() 組合:

>>> questions = [‘name‘, ‘quest‘, ‘favorite color‘]
>>> answers = [‘lancelot‘, ‘the holy grail‘, ‘blue‘]
>>> for q, a in zip(questions, answers):
...     print(‘What is your {0}?  It is {1}.‘.format(q, a))
...
What is your name?  It is lancelot.
What is your quest?  It is the holy grail.
What is your favorite color?  It is blue.

  

要反向遍歷一個序列,首先指定這個序列,然後調用 reversed() 函數:

>>> for i in reversed(range(1, 10, 2)):
...     print(i)
...
9
7
5
3
1

  

要按順序遍歷一個序列,使用 sorted() 函數返回一個已排序的序列,並不修改原值:

>>> basket = [‘apple‘, ‘orange‘, ‘apple‘, ‘pear‘, ‘orange‘, ‘banana‘]
>>> for f in sorted(set(basket)):
...     print(f)
...
apple
banana
orange
pear

  -------->

模塊......

菜鳥教程 Python 手記 1