集合
一、集合的特性
無序,不重復
二、集合的創建方法
1. 大括號
>>> s = {11, 22, 33, 11}
>>> s
{33, 11, 22}
2.初始化函數set
>>> s = set((11,22,33,11)) >>> s {33, 11, 22}
還可以使用set創建空集合
>>> s = set() >>> s set()
調用set()函數的時候相當於執行了python中 set類的__init__方法,同樣的使用s = {11,22,33}創建集合的時候也調用了set類的 __init__方法。
三、集合的方法
1.add方法
向集合中添加一個元素,如果該元素存在,則執行無效
>>> s {33, 11, 22} >>> s.add(44) >>> s {33, 11, 44, 22} >>> s.add(11) >>> s {33, 11, 44, 22}
2.clear方法
清空集合中的所有元素
>>> s {33, 11, 44, 22} >>> s.clear() >>> s set()
3.copy方法
獲得一個集合的副本,並且屬於淺拷貝。
>>> s {33, 11, 22} >>> s1=s.copy() >>> s1 {33, 11, 22} >>> id(s) 11997704 >>> id(s1) 11998376
4.difference方法
A.difference(B),在集合A中但不再集合B中
>>> s {33, 11, 22} >>> s1 = {22,33,44} >>> s1 {33, 44, 22} >>> s.difference(s1) {11}
5. difference_update方法
A.difference_update(B),類似difference,區別是將結果復制給A.
>>> s {33, 11, 22} >>> s1 {33, 44, 22} >>> s.difference_update(s1) >>> s {11}
6.discard方法
移除集合中的某個元素,如果該元素不在集合中,則什么也不做。
>>> s1 {33, 44, 22} >>> s1.discard(22) >>> s1 {33, 44} >>> s1.discard(55) >>> s1 {33, 44}
7.remove方法
移除集合中的某個元素,如果該元素不再集合中,則報錯
>>> s1 {33, 44, 22} >>> s1.remove(22) >>> s1 {33, 44} >>> s1.remove(55) Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 55
8.intersection方法
返回兩個集合的交集
>>> s {33, 11, 22} >>> s1 {33, 44, 22} >>> s.intersection(s1) {33, 22}
9.intersection_update方法
A.intersection_update(B),返回集合A和集合B的交集,並將結果賦值給A
>>> s {33, 11, 22} >>> s1 {33, 44, 22} >>> s.intersection_update(s1) >>> s {33, 22}
10.symmetric_differece方法
返回兩個集合交集的補集
>>> s {33, 11, 22} >>> s1 {33, 44, 22} >>> s.symmetric_difference(s1) {11, 44}
11.symmetric_difference_update方法
A.symmetric_difference_update(B),返回兩個集合交集的補集,並將結果賦值給A
>>> s {33, 11, 22} >>> s1 {33, 44, 22} >>> s.symmetric_difference_update(s1) >>> s {11, 44}
12.union 方法
返回兩個集合的並集
>>> s {33, 11, 22} >>> s1 {33, 44, 22} >>> s.union(s1) {33, 22, 11, 44}
13.upadate方法
A.update(B),以集合B擴展集合A
>>> s {33, 11, 22} >>> s1 {33, 44, 22} >>> s.update(s1) >>> s {33, 22, 11, 44}
14.isdisjoint方法
如果兩個集合沒有交集的話返回True
>>> s {33, 22} >>> s1 {33, 44, 22} >>> s2 {44, 55} >>> s.isdisjoint(s1) False >>> s.isdisjoint(s2) True
15.issubset方法
A.issubset(B),判斷集合A是不是集合B的子集
>>> s {33, 22} >>> s1 {33, 44, 22} >>> s.issubset(s1) True
16.issuperset方法
A.issuperset(B),判斷集合A是不是集合B的父集合
>>> s {33, 22} >>> s1 {33, 44, 22} >>> s1.issuperset(s) True
17.pop方法
隨機移除集合中的一個元素,並返回該元素
>>> s1 {33, 44, 22} >>> s1.pop() 33
函數
函數就是最基本的一種代碼抽象的方式。
一、函數的定義
def 函數名(參數): . . . 函數體 . . . 返回值
定義函數有一下要點:
def 關鍵字
函數名 用於調用、標識和區別其他函數
函數體 函數中實現邏輯的地方
參數 為函數提供數據,是函數的應用場景更廣泛
返回值 函數執行完成后最后返回的值或者標識
二、 函數的參數
1、普通參數(位置參數)
def foo(name, passwd) print (name, passwd) foo(xiaoming, 123) foo(hanmeimei, 456)
函數普通參數,接收特定個數的參數,位置必須對應正確
2、默認參數
def foo(name, school='beida') return name in school foo(xiaoming) xiaoming in beida foo(hanmeimei) hanmeimei in beida
默認參數給予參數特定的默認值,函數調用時默認參數如果不指定參數值,則使用默認參數,如果指定參數值,則使用指定參數。
3、動態參數1-接收任意數量的位置參數
def foo(*args): print args foo(11,22,33,44,55,66) 11,22,33,44,55,66
4、動態參數2-接收任意數量的關鍵字參數
def foo(**kwargs): print kwargs foo(name=xiaoming, age=18) {name:xiaoming, age:18}
5、動態參數3-接收任意數量的位置參數和任意數量的關鍵字參數
def foo(*args, **kwargs): print args, kwargs foo(11,22,33,44,name=xiaoming, age=18) (11,22,33,44){'name':'xiaoming', 'age':18}
三、 內置函數
1.abs()
返回一個數的絕對值。參數可以是整數或浮點數,如果參數是一個復數,將會返回它的模。
2.all(iterable)
如果 iterable(迭代器) 中所有元素都為 true (或者iterable 為空)則返回 True。
3.any(iterable)
假如iterable 里任意一個元素是True,則返回True。假如iterable是空, 返回 False。
4.ascii(object)
效果如同 repr(),返回一個可打印字符串,但是 repr() 返回的字符串中的非 ASCII 字符使用 \x, \u or \U 轉義字符進行了轉義。
5.bin(x)
將一個整數轉換成一個二進制字符串。結果是一個有效的Python表達式。假如 x 不是一個 Python int 類型的對象, 那它必須定義一個 __index__() 方法,方法的返回值是整數(integer)
6.bytes([source[, encoding[, errors]]])
返回一個新的“bytes”對象,它是一個由0 <= x < 256 范圍內的整數組成的不可變序列。
7.chr(i)
返回一個Unicode編碼是整數i的字符串,例如, chr(97)返回字符串 'a'。這個功能與ord()相反。這個參數正確的范圍從0 到1,114,111 (十六進制表示是0x10FFFF ). 如果i超出這個范圍,將會觸發ValueError。
8.ord(c)進行
給定一個代表Unicode編碼的字符,返回一個代表這個字符的整。
文件操作
open函數
該函數生成一個打開的文件句柄,文件句柄很多方法,利用這些方法進行文件操作。
open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True):
打開文件的模式有:
r 只讀(默認)
w 只寫,寫之前會清空文件,對文件進行truncate,不存在則創建。
x 只寫,不存在則創建,存在則報錯。
a 追加,在文件原有的基礎上追加新的內容。
+ 模式
r + 讀寫,用的最多,寫之前可以使用seek函數移動文件指針
w + 讀寫,寫之前會清空文件
x + 讀寫,如果文件存在則報錯
a + 讀寫,追加寫
b模式
rb 只讀,以二進制的方式讀文件
wb 只寫,以二進制的方式寫文件
ab 追加寫,以二進制的方式寫文件
xb 只寫,以二進制的方式寫文件
文件操作的方法
def close(self, *args, **kwargs): # real signature unknown 關閉文件 pass def fileno(self, *args, **kwargs): # real signature unknown 文件描述符 pass def flush(self, *args, **kwargs): # real signature unknown 刷新文件內部緩沖區 pass def isatty(self, *args, **kwargs): # real signature unknown 判斷文件是否是同意tty設備 pass def read(self, *args, **kwargs): # real signature unknown 讀取指定字節數據 pass def readable(self, *args, **kwargs): # real signature unknown 是否可讀 pass def readline(self, *args, **kwargs): # real signature unknown 僅讀取一行數據 pass def seek(self, *args, **kwargs): # real signature unknown 指定文件中指針位置 pass def seekable(self, *args, **kwargs): # real signature unknown 指針是否可操作 pass def tell(self, *args, **kwargs): # real signature unknown 獲取指針位置 pass def truncate(self, *args, **kwargs): # real signature unknown 截斷數據,僅保留指定之前數據 pass def writable(self, *args, **kwargs): # real signature unknown 是否可寫 pass def write(self, *args, **kwargs): # real signature unknown 寫內容 pass def __getstate__(self, *args, **kwargs): # real signature unknown pass def __init__(self, *args, **kwargs): # real signature unknown pass @staticmethod # known case of __new__ def __new__(*args, **kwargs): # real signature unknown """ Create and return a new object. See help(type) for accurate signature. """ pass def __next__(self, *args, **kwargs): # real signature unknown """ Implement next(self). """ pass def __repr__(self, *args, **kwargs): # real signature unknown """ Return repr(self). """ pass buffer = property(lambda self: object(), lambda self, v: None, lambda self: None) # default closed = property(lambda self: object(), lambda self, v: None, lambda self: None) # default encoding = property(lambda self: object(), lambda self, v: None, lambda self: None) # default errors = property(lambda self: object(), lambda self, v: None, lambda self: None) # default line_buffering = property(lambda self: object(), lambda self, v: None, lambda self: None) # default name = property(lambda self: object(), lambda self, v: None, lambda self: None) # default newlines = property(lambda self: object(), lambda self, v: None, lambda self: None) # default _CHUNK_SIZE = property(lambda self: object(), lambda self, v: None, lambda self: None) # default _finalizing = property(lambda self: object(), lambda self, v: None, lambda self: None) # default
管理上下文
with open('file1', 'r') as f1: for line in f1: . . . . .
with 語句可以自動關閉文件,在with語句快內操作文件
在Python 2.7 及以后,with又支持同時對多個文件的上下文進行管理,即:
with open('file1', 'r') as f1, with open('file2', 'r') as f2: for line1 in f1: for line2 in f2: . . . . . .
lambda表達式
lambda函數也叫匿名函數,即,函數沒有具體的名稱,而用def創建的方法是有名稱的。如下:
lambda語法如下:
lambda [arg1[,arg2,arg3....argN]]:expression
lambda語句中,冒號前是參數,可以有多個,用逗號隔開,冒號右邊的返回值。lambda語句構建的其實是一個函數對象。
如果沒有參數,則lambda冒號前面就沒有
如果有參數,則lambda冒號就有變量,可以是多個變量用逗號隔開
>>>f1 = lambda:'without canshu' >>>f1() 'without canshu' >>>f2 = lambda x,y: x * Y >>>f2(2,3) 6
