1 變量
- 對象有類型爽篷,變量無類型,變量只是對象的一個標簽趋艘。
- 每個變量中存儲一個值----與變量相關的信息。
- 程序中可隨時修改變量的值凶朗,python始終記錄最新值瓷胧。
1.1 變量的命名和使用
- 變量名只包含字母、數(shù)字棚愤、下劃線搓萧,可以字母或下劃線開頭,不能以數(shù)字開頭宛畦。
- 變量名不能包含空格瘸洛,可使用下劃線分割其中的單詞。
- python關鍵字和函數(shù)名不能用作變量名次和。
- 變量名應簡短且具有描述性反肋。
1.2 避免命名錯誤
程序存在錯誤,解釋器會提供一個traceback踏施,它是一個記錄石蔗,指出程序可能在哪個地方出錯罕邀。
名稱錯誤通常兩種情況:使用前未賦值,輸入變量名時拼寫不正確养距。
2 python數(shù)據(jù)類型
python中標準數(shù)據(jù)類型6種:Number诉探、String、List棍厌、Tuple肾胯、Dict、Set
按照可變不可變分類:不可變類型:數(shù)字定铜、字符串阳液、元組 可變類型:列表、字典揣炕、集合
序列類型:字符串、列表东跪、元組
序列
2.1 字符串 str()(不可變)
- 表示:單引號畸陡、雙引號、反斜杠(轉義)虽填、原始字符串(r/R)
- 相關函數(shù):repr() input() chr() ord() len()
- 操作:索引丁恭、分片、加斋日、乘牲览、成員檢查(in/not in)、長度恶守、最大值第献、最小值
- 格式化輸出:
- 占位符:print("Hello, %s.My name is %s." %("fengdi", "yuxi")) %s為占位
- .format():{index}為占位符
print("hello {}, my name is {}".format("fengdi", "yuxi"))
print("hello {0}, my name is {1}".format("fengdi", "yuxi"))
print("hello {name1}, my name is {name2}".format(name1="fengdi", name2="yuxi"))
-
接受輸入:
- input() :從標準輸入讀取一個字符串
- eval(input()) :原始輸入為何類型,結果即為何類型(接受原始輸入)
-
常用方法:
- split():返回字符串列表
- strip():去掉兩端空格 (.lstrip() .rstrip())
- upper():全部大寫 (.lower() .title() .isupper() .islower())
- join():.split()的反方法兔港。S.join(a) S為分隔符
- find():返回子串的最小索引庸毫,未找到返回-1
- index():同上,未找到拋出異常
- replace(old, new):替換字符串
- count():統(tǒng)計子串出現(xiàn)的次數(shù)
2.2 數(shù)字 number(不可變)
- 分類:int float complex Bool
- 運算:+ - * / // % **
注:對于除法而言衫樊,只要有一個為浮點數(shù)飒赃,結果為浮點數(shù)。
- 模塊:math() cmath()
- 函數(shù):id() type() dir() help() pow() sqrt() abs() round() divmod() floor()
id():對象的內存地址 help():顯示對象的幫助信息 pow():乘方運算
type():對象的類型 sqrt():math模塊提供科侈,開方運算 abs():絕對值
dir():對象的屬性 floor():返回下舍整數(shù)
2.3 列表 list()(可變)
表示:[] 里面可為任意類型 list()函數(shù):list(iterable)
-
操作:索引载佳、分片、加臀栈、乘蔫慧、成員檢查、長度挂脑、最大值藕漱、最小值欲侮、遍歷
改變元素:重新賦值、 刪除元素:del語句
-
常用方法:
- append():末尾添加元素
- extend():擴展列表肋联,通過iterable
- insert():根據(jù)位置插入元素
- count():統(tǒng)計元素出現(xiàn)次數(shù)
- index():返回某元素的第一個索引位置
- pop():刪除指定位置元素威蕉,默認刪除末尾一個,有返回值即刪除的元素
- remove():移除某個元素的第一個匹配值
- clear():清空列表元素
- copy():復制列表元素橄仍,生成一個新對象韧涨,內存地址不同即并不指向同一個對象。也可使用切片的方法侮繁,a[:]虑粥,但不能直接賦值,直接賦值為同一對象(引用)
- sort():排序宪哩,原地修改娩贷,默認從小到大,設置reverse=True相反
- sorted():排序锁孟,修改副本彬祖,自身不變
- reverse():反轉列表
- reversed():反轉
作為堆棧使用:后進先出---> append()和pop()方法,作為隊列使用品抽,先進先出
range():該函數(shù)常用來生成數(shù)字列表储笑,如list(range(1, 10, 2))
列表解析:從序列中創(chuàng)建列表,表達式后可跟多個if或for 子句來圆恤,來滿足情況
mylist = [x * x for x in range(10)]
mylist = [x * x for x in range(10) if _____ ] # 后跟if用來限制條件
mylist = [x * y for x in range(10) for y in range(10)] # 雙重for語句
2.4 元組 tuple() 不可變 有序
- 表示:圓括號()表示突倍,可為任意類型(只有一個元素需要加逗號)
- 操作:索引、分片盆昙、加羽历、乘、長度弱左、成員檢查窄陡、最大值、最小值拆火、遍歷
- 常用方法:count()跳夭、index()
2.5 字典 dict() 無序性
- 表示:花括號{}表示,空字典:a={} 鍵值對形式
- 鍵不可重復且為不可變類型(數(shù)字 字符串 元組)们镜,值可重復(可為python任意對象)
dict1 = {"name":"fengdi", "age":23, "language":"python" }
a = dict([("name", "fengdi"), ("age", 25)])
b = dict(name="fengdi", age=23) # 關鍵字參數(shù)構造
-
基本操作:
- len():字典長度(鍵值對數(shù)量)
- d[key]:獲取某個鍵對應的值
- d[key]=value:重新賦值币叹,不存在則添加該鍵值對
- del d[key]:刪除某鍵值對
- key in d:成員檢查
-
常用方法:
- copy:內存中產生一個新對象,地址不同(淺拷貝)整體來說
- deepcopy:import copy copy.deepcopy()都不為同一對象
- clear:清空字典元素
- setdefault:查找某鍵對應的值模狭,鍵不存在可設定默認值颈抚,未設定,默認值為None,并添加到字典
- get:同上贩汉,不存在則不添加到字
- items:返回視圖驱富,鍵值對組成的列表形式,可用來遍歷
- keys:同上匹舞,鍵組成的列表形式
- values:同上褐鸥,值組成的列表形式
- pop:刪除指定的鍵對應的值并返回,若不存在赐稽,返回指定值叫榕,否則拋出錯誤
- pipitem:隨機刪除鍵值對,并返回tuple姊舵,字典為空晰绎,拋出錯誤
- update:從另一個字典或可迭代對象更新字典
2.6 集合 set() 元素不可重復,無序
表示:花括號{}表示括丁, set(variable):set()函數(shù) (空集合:set())
可變荞下,即unhashable,集合里面的元素應該可哈希史飞,即不可變類型
-
常用方法:
- add:添加元素
- pop:隨機刪除元素并返回锄弱,集合為空拋出異常
- update:利用其它集合或可迭代對象修改集合
- remove:刪除指定元素,元素不存在祸憋,拋出異常
- discard:刪除指定元素,元素不存在肖卧,不做任何事
- clear:清空集合元素
不可變集合:a=frozenset() 元素不可修改
-
集合運算:
- 元素與集合的關系:in not in
- 集合與集合:子集:<或a.issubset(b)
- 超集:>或a.issuperset(b)
- 并集:|或a.union(b)
- 交集:&或a.intersection(b)
- 差集:-或a.difference(b)