一、Python有8種數據類型,包括Boolean(布爾值)+None(空值)+六個標准數據類型:
- 不可變數據(3 個):Number(數字)、String(字符串)、Tuple(元組);
- 可變數據(3 個):List(列表)、Dictionary(字典)、Set(集合)
1.1、查看變量的數據類型:type() 和isinstance()
- type() 不會認為子類是一種父類類型,不考慮繼承關系。
- isinstance() 會認為子類是一種父類類型,考慮繼承關系。
如果要判斷兩個類型是否相同推薦使用 isinstance()。
eg:
if type(one) != int or type(two) != int:
print "THE NUMBER IS WRONG"
1.2 、數字Numbers
(1)python支持三種不同的數值類型
- int:整形(整型是沒有限制大小的,可以當作 Long 類型使用)
- float:浮點型
- complex:復數
注:計算機里如何區分正數負數?我們規定最高位是符號位。為0是正,為1負。所以最高位是不可以參加計算的。比如二進制數1000最高位是符號位的話,轉十進制不是8,而是負0(正0的二進制形式是0000)
(2)轉換方法:
- int(x) 轉換成一個integer
- long(x) 轉換成一個long interger(python3中沒有long)
- float(x) 轉換成一個浮點數
- str():轉換為字符串
- list():轉換為列表
- eval():轉換為字典
- 隨機數函數:
- random() 隨機生成下一個實數,它在[0,1)范圍內
- uniform(x, y) 隨機生成下一個實數,它在[x,y]范圍內
(3)注意:
- Python可以同時為多個變量賦值,如a, b = 1, 2。
- 值的除法包含兩個運算符:/ 返回一個浮點數,// 返回一個整數。
- 在混合計算時,Python會把整型轉換成為浮點數。
1.3、字符串String
使用引號( ' )、雙引號( " )、三引號( ''' 或 """ ) 來表示字符串。其中三引號可以由多行組成,編寫多行文本的快捷語法
(1)字符串有兩種索引方式,從左往右以0開始,從右往左以-1開始
(2)字符串格式化兩種方法:
- 占位符% : 將一個值插入到一個有字符串格式符 %s 的字符串中
- %s 格式化字符串;
- %d 格式化整數)
eg:print "My name is %s and weight is %d kg!" % ('Zara', 21)
- str.format():增強了字符串格式化的功能。基本語法是通過 {} 和 : 來代替以前的 %
- {} 格式化字符串
- : 格式化數字
(3)轉義字符: 使用反斜杠(\)轉義特殊字符
(4)比較字符串:python可以使用比較運算符(==、!=、>、<...)通過比較字符的數值ASCII代碼實現比較字符串大小
(5)字符串前面加r:意味着該字符串將被視為原始字符串,這意味着所有轉義碼都將被忽略
(6)字符串前面加u:代表編碼是unicode
(7)字符串處理函數:
- strip():從原始字符串的開頭和結尾刪除給定的字符。默認刪除字符串開頭和結尾的空格,並返回前后不帶空格的相同字符串
格式:str.strip([characters])
- startsWith():用來判斷當前字符串是否是以另外一個給定的子字符串“開頭”,根據判斷結果返回 true 或 false。
格式:str.startsWith(searchString [, position]);
searchString要搜索的子字符串。
position在 str 中搜索 searchString 的開始位置,默認值為 0開頭處。
- split():拆分字符串。通過指定分隔符對字符串進行切片,並返回分割后的字符串列表
格式:str.split(str="",num=string.count(str))[n]
- str:表示為分隔符,默認為空格,但是不能為空('')
- num:表示分割次數
- [n]:表示選取第n個分片
str = "this is string example....wow!!!"
print (str.split( ))
#輸出:['this', 'is', 'string', 'example....wow!!!']
1.4、列表List
列表用“ [ ] ”標識,是 python 最通用的復合數據類型,可包含任何類型的值。
語法:列表名=[值1,值2]
取值:列表名[1] (索引值以 0 為開始值,-1 為從末尾的開始位置)
(1)列表元素指向其值,列表是可變的,列表屬於棧---后進先出(隊列---先進先出)
-
- (pop:刪除末尾/棧頂元素)
- (push:在末尾/棧頂添加元素)
(2)列表操作:
-
- 增:列表[0:0]=[元素](注意:這種方式是往列表中的第一個位置添加元素)
- 刪:
- 刪除單個元素:del 列表[下標]
- 刪除多個元素(通過切片):del 列表[起始位置:結束位置]
- 改:列表[下標]=新值
- 查:
-
-
- 獲取單個值:列表[下標],下標可以為負數,負數是從倒數獲取
- 獲取多個值:列表[起始位置:結束位置:步長],起始位置和結束位置可以省略不寫;如果開始位置不寫,則會從第一個元素開始獲取;如果結束位置不寫,則會獲取到最后一個元素;如果都不寫,則為列表的復制
-
5.遍歷:遍歷list列表的元素,使用for循環
(3)列表運算:
- +:兩個列表相加,包含兩個列表的所有元素
- *:列表元素重復
- in:檢查元素是否存在
- not in:檢查元素是否不存在
(4)列表方法:
- list.index(x):獲取x的索引
- list.append(x):在列表最后追加元素
- list.extend(x,y):在列表最后追加多個元素
- list.insert(i, x): 在索引i處插入x
- list.pop(i, x): 刪除索引處元素,沒有指定i則刪除最后一個元素
- list.remove(x) :移除x
- list.clear():清空列表
- list.count(x):統計x在列表中出現的次數
(5)列表排序:
(6)列表函數:
- len(list) :列表長度
- max(list):返回列表元素中的最大值
- min(list):返回列表元素中的最小值
(7)自引用 :snake[1]=snake [1,[...],3 ]
1.5、元組Tuple
元組用"()"標識。內部元素用逗號隔開。但是元組不能二次賦值,相當於只讀列表
1.6、字典Dictionary
字典當中的元素是通過鍵來存取的,字典用"{ }"標識,它是一個無序的鍵(key) : 值(value)對集合
格式:d = {'key1' : value1, 'key2' : value2 }
鍵必須是唯一的,但值則不必,值可以取任何數據類型,但鍵必須是不可變(數字,字符串、元組)
(1)字典取值:
- person = {'name':'xiaoming', 'age':18}
- # 第一種 若鍵不存在則會拋出KeyError異常
- person['city']
- # 第二種 不會拋出異常,不存在則返回None,也可以設置默認返回值
- person.get('city',"上海")
- # 第三種 與第二種類似,區別在於setdefault方法會更新字典
- person.setdefault('city', '上海')
(2)修改字典:字典名[key]=value,如果key存在則修改,如果不存在則創建一個新的key和value person["name"]="小鹿"
(3)刪除字典:def dic[] ;
清空字典內所有元素: dict.clear()
(4)遍歷dict:
- keys():獲取所有key ;.
- values():獲取所有值;
- items() 方法:以列表返回可遍歷的鍵值對
for key in person.keys():
print(f"{key}:{person.get(key)}")
for value in person.values():
print(f"{value}")
for key, value in person.items():
print(f"{key}:{value}")
(5)構造函數 dict() :可以直接從鍵值對序列中構建字典如下:
eg:a = dict([('Ctrip', 1), ('Google', 2), ('Taobao', 3)])
{'Ctrip': 1, 'Google': 2, 'Taobao': 3}
1.7、集合:(set)
是一個無序的不重復元素序列。可以使用大括號 { } 或者 set() 函數創建集合,注意:創建一個空集合必須用 set() 而不是 { },因為 { } 是用來創建一個空字典。
創建格式:parame = {value01,value02,...} 或者 set(value)
(1)集合中判斷元素是否存在:x in s
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket) # 這里演示的是去重功能
{'orange', 'banana', 'pear', 'apple'}
'orange' in basket # 快速判斷元素是否在集合內
True
'crabgrass' in basket
False
(2)集合運算:
a = set('abracadabra')
b = set('alacazam')
a - b # 集合a中包含而集合b中不包含的元素{'r', 'd', 'b'}
a | b # 集合a或b中包含的所有元素{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
a & b # 集合a和b中都包含了的元素{'a', 'c'}
a ^ b # 不同時包含於a和b的元素{'r', 'd', 'b', 'm', 'z', 'l'}
2、序列:值一組按順序排列的值(字符串、元組、列表)
- 正索引為0,負索引為-1,為空表示頭或尾
- 切片表達法:變量 [頭下標:尾下標],從索引“頭下標”到“尾下標-1”
s = 'ilovepython'
print(s[1:5]) #結果是love
array = [1, 2, 5, 3, 6, 8, 4]
array[1:] #列出1以后的。輸出[2, 5, 3, 6, 8, 4]
array[:-1] #列出-1之前的。輸出[1, 2, 5, 3, 6, 8]
array[3:-3] #列出3到-3之間的。輸出[3]
array[::-1]#將列表反轉輸出[4,8,6,3,5,2,1]
array[::2]#每隔兩個下標輸出[1, 5, 6, 4]
(1)加號 + 是列表連接運算符,星號 * 是重復操作。
(2)使用len()計算長度
(3)x in s,當s位於x返回true,否則返回false