一、python的數據類型: 數值 字符串 列表 元組 字典;python
數值類型包括; 整型(int) 長整型(long) 浮點型(float) 複數型 字符串;linux
能夠經過type() 來查看是什麼類型的;bash
註釋:len()只支持 字符串類型,不支持浮點數和整數;數據結構
1:整型: 表示的數字,好比 0 100 -100 等; 整數又分爲正整數和負整數;app
整數範圍: 2**32 次方;函數
In [8]: a = 123 In [9]: type(a) Out[9]: int In [10]: 2**32 Out[10]: 4294967296 In [11]: 2**31 Out[11]: 2147483648
註釋:整數的範圍: -2147483648 到 2147483648 加起來恰好;4294967296ui
2:長整型 long 後面會加L; 或者是定義的值很大時, 或者在自定的數值後面加L也能夠;code
In [12]: a = 129999999999999999999999999999999999999 In [14]: a Out[14]: 129999999999999999999999999999999999999L In [15]: a = 100l In [16]: a Out[16]: 100L In [17]: type(a) Out[17]: long
3:浮點型;後面帶小數點 0.0 12.0 -18.8 3e+7對象
In [18]: a = -0.18 In [19]: type(a) Out[19]: float In [20]: a = 3e+7 In [21]: type(a) Out[21]: float
4:複數型;後面加 j -3.14j 排序
In [22]: a = -3.14j In [23]: type(a) Out[23]: complex
5:字符串 str
給變量賦值字符串時,能夠有三種方法: 單引號 雙引號 三引號 /n 表示換行符;
註釋:三引號能夠用做定義字符串,也能夠用做註釋;再使用定義字符串時,必須是三個單引號,或者三個雙引號,不能單雙混用;
In [24]: a = 'abc' In [25]: type(a) Out[25]: str In [26]: a = "abc" In [27]: type(a) Out[27]: str
/n 表示換行符;
In [33]: a = """hello\nworld""" In [34]: a Out[34]: 'hello\nworld' In [35]: print a hello world In [30]: a = '''hello ...: world''' In [31]: a Out[31]: 'hello\nworld' In [32]: print(a) hello world
註釋:字符串時一個序列,那麼針對序列操做的時候能夠經過索引和切片來操做,
索引:第一個字符表示0,依次日後,最後一個字符能夠用 -1 表示;
In [37]: a Out[37]: 'abcde' In [38]: a[0] Out[38]: 'a' In [39]: a[1] Out[39]: 'b' In [40]: a[4] Out[40]: 'e' In [41]: a[-1] Out[41]: 'e'
切片:好比咱們須要去 ab 兩個字符,固然能夠用鏈接符 + 號 a[0]+a[1]
In [42]: a[0]+a[1] Out[42]: 'ab' In [43]: a[0:2] Out[43]: 'ab' In [44]: a Out[44]: 'abcde'
也可使用切片的方式: a[0:2] 0表示a的下標 依次 2 表示 c 的下標,不過不顯示;不過 0 也能夠省略的; a[:2]
均可以省略表示所有內容; a[:]
a[::2] 表示步長值爲 2 ,表示隔兩步一取; 顯示爲 ace;
註釋:a[-1] 表示e,最後一個字母,
也能夠從後往前取,好比 a = abcde 若是取 bc 的話, 那就是 a[-4:-2]
In [58]: a = 'abcde' In [59]: a Out[59]: 'abcde' In [60]: a[-4:-2] Out[60]: 'bc'
默認是從左到右的;也能夠從右到左的;好比 a = abcde 若是取 db 的話, 那就是 a[-2:-4:-1] -1 表示方向
In [61]: a = 'abcde' In [62]: a[-2:-4:-1] Out[62]: 'dc'
四、元組:序列包括字符串 列表 元組 ;
序列的主要特色就是可使用 索引 操做 切片 操做; 索引是取某一個字符, 切片取一組字符;
序列的基本操做:
len() 求序列的長度;
+ 用來鏈接兩個序列;
* 重複序列元素;
in 判斷元素是否存在序列中;
max() 返回最大值;
min() 返回最小值;
cmp(x,y) 判斷兩個序列是否相等;
In [63]: a = 'abcde' In [64]: len(a) #求字符串長度; Out[64]: 5 In [65]: a + 'f' #字符串相加; Out[65]: 'abcdef' In [69]: b = 5 In [70]: b + 6 #數值相加; Out[70]: 11
如上圖:len 能夠用來求數據的長度;
+ 加號,能夠用來序列相加;能夠是同一類型相加(字符串相加 數值相加),也能夠不一樣類型( 字符串和數字相加)----不過須要轉換一下;
In [84]: name = 'wo jin nian' In [85]: h = 'sui' In [86]: name + str(age) + h Out[86]: 'wo jin nian24sui'
# 號表示重複,後跟數字,表示重啓的前面的多少次;
'#' * 50
Out[89]: '##################################################'
in 判斷元素是否在序列裏;
判斷 a 是否在 a 這個序列中, 存在則返回true, 不存在則返回flase; 已知 a = 'abcde'
In [91]: a= 'abcde' In [92]: 'a' in a Out[92]: True In [93]: 's' in a Out[93]: False
還有not in 表示取反, 'f' not in a 表示 f 若是不在 a 這個序列裏,則返回true, 若是在 則 返回flase;
In [94]: 'f' not in a Out[94]: True In [95]: 'f' not in a+'f' Out[95]: False
max() 求最大值 min() 求最小值
In [99]: b = '12345' In [102]: type(b) Out[102]: str In [100]: max(b) Out[100]: '5' In [101]: min(b) Out[101]: '1'
註釋:max()和min() 只支持序列(字符串類型)
cmp(x, y) 比較兩個序列是否相等; 若是 x > y 則返回正整數, x < y 返回負整數, x = y 返回0 ;
In [113]: a= 'abcde' In [114]: cmp(a, 'abcde') # a 則表示上面的變量,它倆相等;因此返回是0 ; Out[114]: 0 In [115]: cmp(a, 'abcdef') # a 小於右邊的字符串,因此返回是負整數 -1 ; Out[115]: -1 In [116]: cmp(a+'g', 'abcdef') # a 大於右邊的字符串,因此返回是正整數 1 ; Out[116]: 1
註釋:兩個序列是否相等; 若是 x > y 則返回正整數, x < y 返回負整數, x = y 返回0 ;
五、元組() 能夠存儲一系列的值,和字符串同樣是不可變的(裏面的內容不能夠改變)
如何定義元組呢? 多個元素用 , 逗號分開;
t = ('a',1,(1,)) 表示裏面存放的字符串 a 數字 1 , 又存放了元組 1 ;
In [119]: t = ('a',1,(1,)) In [120]: t Out[120]: ('a', 1, (1,)) In [121]: type(t) Out[121]: tuple
元組一般用於接受函數的返回值;以下;
定義t = (a, 'b', 'c') 這三個元素,其中a是表示以前定義的變量abcde,未加引號, b 和 c 表示字符串;
而後經過三個變量去接收這個值; first 第一個值 second 第二個值 third 第三個值;
In [122]: t = (a, 'b', 'c') In [123]: t Out[123]: ('abcde', 'b', 'c') In [127]: first, second, third = t In [128]: first Out[128]: 'abcde' In [129]: second Out[129]: 'b' In [130]: third Out[130]: 'c'
t.count
python裏面的變量 字符串 序列 都稱爲對象;
元組和字符串同樣屬於序列類型,也能夠經過序列和切片操做;
元組拆分;
t = ('a', 'b', 'c') A, B, C = t
六、列表:是一種有序項目的項目的數據結構,列表是可變數據類型的數據;
建立列表;
list = [] 建立空列表;
list2 = list() 經過list()函數來建立空列表;
list3 = ['a',1,2] 建立列表;
In [146]: list1 = [] #建立空列表; In [148]: type(list1) Out[148]: list In [149]: list2 = list() #經過list函數來建立列表: In [150]: type(list2) Out[150]: list In [151]: list2 Out[151]: [] In [152]: list3 = ['a',1,(1,),['hello', 'python']] #建立list列表; In [153]: list3 Out[153]: ['a', 1, (1,), ['hello', 'python']] In [154]: len(list3) Out[154]: 4
列表的特性:列表的值時可變的;經過索引的方式把list3的值第 0 位 變成 a;
In [167]: list3 Out[167]: ['b', 1, (1,), ['hello', 'python']] In [168]: list3[0] Out[168]: 'b' In [169]: list3[0] = a In [170]: list3 Out[170]: ['abcde', 1, (1,), ['hello', 'python']]
三、往空列表裏追加: list2爲以前建立的空列表; 經過 list2 = list() 函數建立;
給列表添加元素: list2.append( )
In [181]: list2.append('linux') In [182]: list2 Out[182]: ['linux'] In [183]: list3 + list2 Out[183]: ['abcde', 1, (1,), ['hello', 'python'], 'linux']
註釋:而後能夠把list3和list2 相加;
也能夠重複以前的列表, 用 * 號; (list3) * 2 (list3+list2) * 2 先加再乘;
In [185]: (list3) * 2 Out[185]: ['abcde', 1, (1,), ['hello', 'python'], 'abcde', 1, (1,), ['hello', 'python']] Out[186]: ['linux', 'linux'] In [187]: (list3 + list2) * 2 Out[187]: ['abcde', 1, (1,), ['hello', 'python'], 'linux', 'abcde', 1, (1,), ['hello', 'python'], 'linux']
六、刪除列表中的元素:兩種方式以下; del list2 表示刪除真個list2 列表;
###可使用help(list.remove)查看幫助等;
del list3[4] 須要知道它的下標纔可以刪除; 0 1 2 3 -l (最後表示 -1 )
list.remove(1) #默認刪除是first第一個value;
In [204]: list3 Out[204]: ['abcde', 1, (1,), ['hello', 'python']] In [205]: del list3[-1] #第一種方式,刪除最後一個元素; In [206]: list3 Out[206]: ['abcde', 1, (1,)] In [209]: list3.remove(1) #刪除第一個元素; In [210]: list3 Out[210]: ['abcde', (1,)]
七、查找; in
'a' in list3 表示 a 是否在這個列表,若是在,返回true,若是不在返回flase;
'a' not in list3 表示a 是否在這個列表,若是在,返回flase,不過則返回true;
In [210]: list3 Out[210]: ['abcde', (1,)] In [211]: 'a' in list3 Out[211]: False In [215]: 'abcde' in list3 Out[215]: True In [216]: 'a' not in list3 Out[216]: True In [217]: 'abcde' not in list3 Out[217]: False
修改字符; 列表 list3 的 0 位修改成 b ;
list3[0] = 'b'
In [218]: list3 Out[218]: ['abcde', (1,)] In [219]: list3[0] = 'b' In [220]: list3 Out[220]: ['b', (1,)]
list.insert 插入空的列表;
In [220]: list3 Out[220]: ['b', (1,)] In [221]: list3.insert(1, list1) In [222]: list3 Out[222]: ['b', [], (1,)] 插入了一個空列表;
給空列表裏寫入值; list3[1].append('abc')
In [225]: list3[1].append('abc') In [226]: list3 Out[226]: ['b', ['abc'], (1,)]
列表排序: list.sort
list3.sort()
In [227]: list3 Out[227]: ['b', ['abc'], (1,)] In [228]: list3.sort() In [229]: list3 Out[229]: [['abc'], 'b', (1,)]
反轉(最後一位變成了第一位); list.reverse
In [229]: list3 Out[229]: [['abc'], 'b', (1,)] In [230]: list3.reverse() In [231]: list3 Out[231]: [(1,), 'b', ['abc']]
list.pop 根據下標來刪除,當時會返回一下當前值;
如咱們刪除list3 中下標爲 1 的,使用 list.pop 不只會刪除,還會返回刪除的這個值;
In [231]: list3 Out[231]: [(1,), 'b', ['abc']] In [232]: list3.pop() Out[232]: ['abc'] In [233]: list3 Out[233]: [(1,), 'b']
註釋:默認什麼也不加,會刪除最後一個;如上圖例;
list.ectend,可迭代的,會把新增的追加列表裏; list3.extend(range(5))
In [248]: range(5) Out[248]: [0, 1, 2, 3, 4] In [249]: list3.extend(range(5)) In [250]: list3 Out[250]: [(1,), 'b', 0, 1, 2, 3, 4]
list.exxend 會把元素迭代追加進去;
list3.exxtend('abcde')
In [255]: list3.extend('abcde') In [256]: list3 Out[256]: [(1,), 'b', 0, 1, 2, 3, 4, 'a', 'b', 'c', 'd', 'e']
也能夠追加元組: list3.extend(('t1', 't2'))
註釋:字符串 元組 列表 都是可迭代的對象;可迭代的能夠經過for循環去訪問;
list.count(value) 若是 判斷這個value值在當前的列表裏,則返回是一個整數,不然不在則返回0;
In [282]: list3 Out[282]: [(1,), 'b', 0, 1, 2, 3, 4, 'a', 'b', 'c', 'd', 'e'] In [284]: list3.count('b') Out[284]: 2 In [285]: list3.count('e') Out[285]: 1 In [286]: list3.count('x') Out[286]: 0
list.index(value) 表示返回索引號;
In [287]: list3 Out[287]: [(1,), 'b', 0, 1, 2, 3, 4, 'a', 'b', 'c', 'd', 'e'] In [288]: list3.index('b') Out[288]: 1 In [289]: list3.index('d') Out[289]: 10 In [290]: list3.index('e') Out[290]: 11
八、字典:是python裏面的數據結構,字典的對象value是可變的,可是字典的鍵值key是不可變的,一個字典可使用不一樣類型的鍵值(元組);不能使用列表list,由於列表是可變的, 由於字典是hash 表顯示是無序的;
可用來存儲一我的年齡 身高 性別等;
固然字符串也能夠存儲的,可是若是有的姓名不是3個,那就取得不全的;
info = 'tom 180 man'
info[0:3]
'tom'
固然也能夠存儲元組裏,可是元組一旦定義完以後,裏面的元素就不能更改,那麼若是增長聯繫人 等信息就沒法添加了;
固然也能夠存儲到列表裏, 可是未來取數據也比較麻煩,經過下標來取,不知道索引就沒法取了;
以下:先建立一個list1 list2 list3 並用zip函數把他們鏈接到一塊兒;而後把這些信息放到字典裏,而後取就很方便了;
In [298]: list1 = ['name', 'age'] In [300]: list2 = ['tom','20'] In [301]: list3 = ['mike','25'] In [302]: list2 Out[302]: ['tom', '20'] In [303]: zip(list1, list2) Out[303]: [('name', 'tom'), ('age', '20')] In [304]: list1 Out[304]: ['name', 'age'] In [305]: list2 Out[305]: ['tom', '20'] In [306]: zip(list1, list3) Out[306]: [('name', 'mike'), ('age', '25')]
註釋:zip函數會把兩個列表合併,組成一個大的列表;
註釋:列表 [ ] 元組 ( ) 字典 { } 字符串 ' '
字典的方法:
keys()
values()
items()
建立字典; dic { }
dic = {'a':1, 1:123} a 表示key 鍵值 1 表是 value 中間用冒號 : 隔開;
In [307]: dic = {} In [308]: type(dic) Out[308]: dict In [309]: dic = {'a':1, 1:123} #建立兩對數據; key - value 對應; In [310]: dic Out[310]: {1: 123, 'a': 1}
二、那麼用元組()做爲key值來建立字典;以下;由於元組()是不可變的,能夠用來當作key 鍵值; dc = {('a','b'):'hello'}
In [313]: dc = {('a','b'):'hello'} In [314]: type(dc) Out[314]: dict In [315]: dc Out[315]: {('a', 'b'): 'hello'}
三、那麼用list[]來做爲key 值建立字典,不能夠的,由於list是可變的;
In [317]: dc1 = {[1]:1} ------------------------------------------------------------ TypeError Traceback (most recent call last) <ipython-input-317-c906c08b610a> in <module>() ----> 1 dc1 = {[1]:1} TypeError: unhashable type: 'list'
註釋:如上圖例,全部list[ ] 不能當作字典的鍵值 key 來使用;
len(dic) 也能夠看字典的長度;
四、字典的參數以下;
dic.key() 返回全部key值組成一個列表list並顯示;
In [319]: dic.keys() Out[319]: ['a', 1, ('a', 'b')]
dic.values() 返回全部value值組成一個列表list並顯示;
In [320]: dic.values() Out[320]: [1, 123, 'hello']