numbers
運算
"+",加,返回操作數中精度最高的類型
"-",減,返回操作數中精度最高的類型
"*",乘,返回操作數中精度最高的類型
"/" ,除,返回float,保留小數,20/4=5.0
"//",除,返回int,不保留小數,20//4=5
"",乘方,返回操作數中精度最高的類型,2 7=128
- "%",取餘,返回操作數中精度最高的類型,4%1.5=1.0
- "&",按位與,5&3=1(101&011=001)
- "^",按位異或,5 ^ 3=6(101^011=110)
- "|",按位或,5|3=7(101|011=111)
- " ~ ",按位反轉,~3=-4
">>",右移,5>>1=2### numbers
運算
"+",加,返回操作數中精度最高的類型
"-",減,返回操作數中精度最高的類型
"*",乘,返回操作數中精度最高的類型
"/" ,除,返回float,保留小數,20/4=5.0
"//",除,返回int,不保留小數,20//4=5
"",乘方,返回操作數中精度最高的類型,2 7=128
- "%",取餘,返回操作數中精度最高的類型,4%1.5=1.0
- "&",按位與,5&3=1(101&011=001)
- "^",按位異或,5 ^ 3=6(101^011=110)
- "|",按位或,5|3=7(101|011=111)
- " ~ ",按位反轉,~3=-4
- ">>",右移,5>>1=2
"<<",左移,5<<2=20
集合
注意: 集合是指包含一組元素的數據結構(區別於set,在此僅指抽象的概念),我們已經介紹的包括:
- 有序集合:list,tuple,str和unicode;
- 無序集合:set
- 無序集合並且具有 key-value 對:dict
常見功能:索引、分片、嵌套、遍歷、構造表達式(沒找到中文解釋,暫時這樣稱呼)
str
字符串,形式爲s="apple"或s='apple'
""" xxx """ 或 ''' xxx ''' 都可表示註釋
n*str,表示str重複n次(n大於0)
索引
str[2],表示str中索引爲2的字符
str[-1],表示str中倒數第一個字符,無-0索引
str[i],如果i超出索引,會拋異常
切片
str[0:2],表示str按照[0,2)截取,即截取索引爲0和1的字符串
str[:3],表示str按照[0,3)截取
str[3:],表示str按照[3,length-1)截取,所以str[:i]+str[i:]和str是等價的
str[i:],如果i超出索引,會返回空串''
str[3:i],如果i超出索引,返回的結果和str[3:]一樣
str在Python中不可更改
list
數組,形式爲list=[3,0,34,2,10]
索引
list[0],索引爲0的元素,返回3
切片
list[:],所有元素,返回[3,0,34,2,10]
list[1:],索引1到最後的元素,返回[0,34,2,10]
list[:2],索引0到1的元素,返回[3,0]
list[-2:],末尾2個元素,返回[2,10]
list[::2],前兩個參數爲空,第三個不爲空,第三個爲步長,表示從[0,len-1)中以2爲步長取出元素,返回[3,34,10]
數組內容可更改,list[2:]=[],結果list=[3,0];list.append(2**3),結果list=[3,0,34,2,10,8]
嵌套
數組可嵌套,即可爲多層數組
元素增刪
list.pop(),刪除末尾元素。
list.pop(3),刪除索引爲3的元素。
list.remove(3),刪除值爲3的首個元素。。
del list[3],刪除索引爲3的元素。
list.append(10),末尾添加元素10。
list.insert(2,10),在索引爲2的元素前插入10,即10放在索引爲2的位置。
list.extend([12,45]),拓展數組,在末尾添加[12,45]。
元素類型轉換
enumerate() 函數自動把每個元素變成 (index, element) 這樣的tuple
for index, name in enumerate(L):
print index, '-', name
數組解析提供了一些簡潔的構造方法:
squares = [x**2 for x in range(10)]
# squares=[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
squares = [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
# squares=[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
數組可嵌套方法和複雜的表達式,即構造表達式:
list = [str(round(pi, i)) for i in range(1, 6)]
# list=['3.1', '3.14', '3.142', '3.1416', '3.14159']
tuple
元組,形式:t=(34,1,54)
元組不可修改,可嵌套
元組定義時可打包元素: t=12,'cool','beauty'
相反,元素也可打包到元組: 12,'cool','beauty'=t
單個元素的元組,定義時若不加括號,需加一個逗號,輸出結果時括號內末尾含有一個逗號
singleton = 'hello', #singleton變爲('hello',)
索引、切片
和list相同
set
集合,形式爲
basket = {'apple', 'orange', 'pear', 'banana'}
無序,元素不重複
數學運算
- 並集,set1|set2
- 差集,set1-set2
- 交集,set1&set2
- 對稱差,取非公有的所有元素,set1^set2
關係運算
- 等於,set1**set2
- 不等於,set1!=set2
- 屬於,set1 in set2
- 不屬於,set1 not in set2
與list一樣,set支持構造表達式
a = {x for x in 'abracadabra' if x not in 'abc'} #結果a={'r','d'}
dictionary
字典,鍵值對形式元素,通過鍵來查找值
tel = {'jack': 4098, 'sape': 4139}
字符串和數字可作爲鍵
添加元素:
tel['guido'] = 4127
檢驗一個key是否在一個字典中:
'guido' in tel # 得到true
得到所有的鍵:
# 得到['jack','sape']
list(tel.keys())
得到所有的值:
# 得到[4098,4139]
list(tel.values())
得到所有的元素:
tel.items()
keys()、values()和items(),都可將結果裝進一個list中
dict()可將一個鍵值對形式的序列轉化成字典
dict([('sape', 4139), ('guido', 4127), ('jack', 4098)]) #得到{'sape': 4139, 'jack': 4098, 'guido': 4127}
字典支持內嵌表達式:
{x: x**2 for x in (2, 4, 6)} #得到{2: 4, 4: 16, 6: 36}
字典遍歷:
knights = {'gallahad': 'the pure', 'robin': 'the brave'}
for k, v in knights.items():
print(k, v)
range
range(10),生成0到10(索引)的值,即0,1,2,3,4,5,6,7,8,9
range(2,5),生成2到5(索引)的值,即2,3,4
range(0,10,3),生成0到10(索引)的值,步長爲3,即0,3,6,9
range是一個object,非list
list(range(3)),根據range(3)生成一個list數組,得[0,1,2]
- "<<",左移,5<<2=20
集合
注意: 集合是指包含一組元素的數據結構(區別於set,在此僅指抽象的概念),我們已經介紹的包括:
- 有序集合:list,tuple,str和unicode;
- 無序集合:set
- 無序集合並且具有 key-value 對:dict
常見功能:索引、分片、嵌套、遍歷、構造表達式(沒找到中文解釋,暫時這樣稱呼)
str
字符串,形式爲s="apple"或s='apple'
""" xxx """ 或 ''' xxx ''' 都可表示註釋
n*str,表示str重複n次(n大於0)
索引
str[2],表示str中索引爲2的字符
str[-1],表示str中倒數第一個字符,無-0索引
str[i],如果i超出索引,會拋異常
切片
str[0:2],表示str按照[0,2)截取,即截取索引爲0和1的字符串
str[:3],表示str按照[0,3)截取
str[3:],表示str按照[3,length-1)截取,所以str[:i]+str[i:]和str是等價的
str[i:],如果i超出索引,會返回空串''
str[3:i],如果i超出索引,返回的結果和str[3:]一樣
str在Python中不可更改
list
數組,形式爲list=[3,0,34,2,10]
索引
list[0],索引爲0的元素,返回3
切片
list[:],所有元素,返回[3,0,34,2,10]
list[1:],索引1到最後的元素,返回[0,34,2,10]
list[:2],索引0到1的元素,返回[3,0]
list[-2:],末尾2個元素,返回[2,10]
list[::2],前兩個參數爲空,第三個不爲空,第三個爲步長,表示從[0,len-1)中以2爲步長取出元素,返回[3,34,10]
數組內容可更改,list[2:]=[],結果list=[3,0];list.append(2**3),結果list=[3,0,34,2,10,8]
嵌套
數組可嵌套,即可爲多層數組
元素增刪
list.pop(),刪除末尾元素。
list.pop(3),刪除索引爲3的元素。
list.remove(3),刪除值爲3的首個元素。。
del list[3],刪除索引爲3的元素。
list.append(10),末尾添加元素10。
list.insert(2,10),在索引爲2的元素前插入10,即10放在索引爲2的位置。
list.extend([12,45]),拓展數組,在末尾添加[12,45]。
元素類型轉換
enumerate() 函數自動把每個元素變成 (index, element) 這樣的tuple
for index, name in enumerate(L):
print index, '-', name
數組解析提供了一些簡潔的構造方法:
squares = [x**2 for x in range(10)]
# squares=[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
squares = [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
# squares=[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
數組可嵌套方法和複雜的表達式,即構造表達式:
list = [str(round(pi, i)) for i in range(1, 6)]
# list=['3.1', '3.14', '3.142', '3.1416', '3.14159']
tuple
元組,形式:t=(34,1,54)
元組不可修改,可嵌套
元組定義時可打包元素: t=12,'cool','beauty'
相反,元素也可打包到元組: 12,'cool','beauty'=t
單個元素的元組,定義時若不加括號,需加一個逗號,輸出結果時括號內末尾含有一個逗號
singleton = 'hello', #singleton變爲('hello',)
索引、切片
和list相同
set
集合,形式爲
basket = {'apple', 'orange', 'pear', 'banana'}
無序,元素不重複
數學運算
- 並集,set1|set2
- 差集,set1-set2
- 交集,set1&set2
- 對稱差,取非公有的所有元素,set1^set2
關係運算
- 等於,set1**set2
- 不等於,set1!=set2
- 屬於,set1 in set2
- 不屬於,set1 not in set2
與list一樣,set支持構造表達式
a = {x for x in 'abracadabra' if x not in 'abc'} #結果a={'r','d'}
dictionary
字典,鍵值對形式元素,通過鍵來查找值
tel = {'jack': 4098, 'sape': 4139}
字符串和數字可作爲鍵
添加元素:
tel['guido'] = 4127
檢驗一個key是否在一個字典中:
'guido' in tel # 得到true
得到所有的鍵:
# 得到['jack','sape']
list(tel.keys())
得到所有的值:
# 得到[4098,4139]
list(tel.values())
得到所有的元素:
tel.items()
keys()、values()和items(),都可將結果裝進一個list中
dict()可將一個鍵值對形式的序列轉化成字典
dict([('sape', 4139), ('guido', 4127), ('jack', 4098)]) #得到{'sape': 4139, 'jack': 4098, 'guido': 4127}
字典支持內嵌表達式:
{x: x**2 for x in (2, 4, 6)} #得到{2: 4, 4: 16, 6: 36}
字典遍歷:
knights = {'gallahad': 'the pure', 'robin': 'the brave'}
for k, v in knights.items():
print(k, v)
range
range(10),生成0到10(索引)的值,即0,1,2,3,4,5,6,7,8,9
range(2,5),生成2到5(索引)的值,即2,3,4
range(0,10,3),生成0到10(索引)的值,步長爲3,即0,3,6,9
range是一個object,非list
list(range(3)),根據range(3)生成一個list數組,得[0,1,2]