python基礎資料型別整理
1.1 列表和元組
1、列表基本操作
1. 列表賦值
a = [1,2,3,4,5,6,7,8] a[0] = 100 #the result : [100, 2, 3, 4, 5, 6, 7, 8]
2. 元素刪除
a = [1,2,3,4,5,6,7,8] del a[0] #the result : [2, 3, 4, 5, 6, 7, 8]
3.分片賦值
a = [1,2,3,4,5,6,7,8] a[::2] # [1, 3, 5, 7] a[-2:] # [7, 8] a[1:1] = [0,0,0] # the result : [1, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8]
4. 使用for i in range(10,-1,-1) 生成列表
for i in range(10,-1,-1): # 開始位置(10),結束位置(-1), 步長(-1) print i,
# 列印結果:10 9 8 7 6 5 4 3 2 1 0 # 從10開始,每次向後取一個值,直到遇到結束位置 -1
2、列表方法
1. append
作用:append用於在列表末尾追加新的物件
a = [1,2,3] a.append(4) #the result : [1, 2, 3, 4]
2. count
作用:count方法統計某個元素在列表中出現的次數
a = ['aa','bb','cc','aa','aa'] print(a.count('aa')) #the result : 3
3. extend
作用:extend方法可以在列表的末尾一次性追加另一個序列中的多個值
a = [1,2,3] b = [4,5,6] a.extend(b) #the result :[1, 2, 3, 4, 5, 6]
4. index
作用:index函式用於從列表中找出某個值第一個匹配項的索引位置
a = [1,2,3,1] print(a.index(1)) #the result : 0
5. insert
作用:insert方法用於將物件插入到列表中
a = [1,2,3] a.insert(0,'aa') #the result : ['aa', 1, 2, 3]
6. pop
作用:pop方法會移除列表中的一個元素(預設是最後一個),並且返回該元素的值
a = [1,2,3] a.pop() #the result : [1, 2] a.pop(0)
7. remove
作用:remove方法用於移除列表中某個值的第一個匹配項
a = ['aa','bb','cc','aa'] a.remove('aa') #the result : ['bb', 'cc', 'aa']
8. reverse
作用:reverse方法將列表中的元素反向存放
a = ['a','b','c'] a.reverse() #the result : ['c', 'b', 'a']
9. sort
作用:sort方法用於在原位置對列表進行排序,意味著改變原來的列表,讓其中的元素按一定順序排列
a = ['a','b','c',1,2,3] a.sort() #the result :[1, 2, 3, 'a', 'b', 'c']
10. enumrate
li = [11,22,33] for k,v in enumerate(li, 1): print(k,v)
11.range和xrange 指定範圍,生成指定的數字
注:python3中的range類似python2中的xrange,比如a = range(1,4) : a返回的不是列表物件而是一個可迭代物件(<class 'range'>)
#1、range根據start與stop指定的範圍以及step設定的步長,生成一個序列:range([start,] stop[, step]) #2、xrange 用法與 range 完全相同,所不同的是生成的不是一個list物件,而是一個生成器 for i in range(1,10,2): print(i)
12. 列表去空
法1: filter(None, your_list) 法2: while '' in your_list: your_list.remove('') 法3: your_list = [x for x in your_list if x != '']
3、元組
元組定義:元組和列表一樣,也是一種序列,唯一的不同是元組不能修改。
1. 建立元組舉例
#1. 建立元組 a = (1,2,3,4,5,6) #2. 將列表轉換成元組 tuple([1,2,3,4]) #the result : (1, 2, 3, 4)
4、列表和元組常用函式
com(x,y) 比較兩個值
len(seq) 返回序列的長度
list(seq) 把序列轉換成列表
max(args) 返回序列或者引數集合中得最大值
min(args) 返回序列或者引數集合中的最小值
reversed(seq) 對序列進行反向迭代
sorted(seq) 返回已經排列的包含seq 所有元素的列表
tuple(seq) 把序列轉換成元組
1.2 字串
1、字串格式化
1. 使用百分號(%)字串格式化
num = 100 print("%d to hex is %x" %(num, num)) #100 to hex is 64 print("%d to hex is %#x" %(num, num)) #100 to hex is 0x64
2. 使用format字串格式化
#1. 位置引數 print("{0} is {1} years old".format("tom", 28)) #tom is 28 years old print("{} is {} years old".format("tom", 28)) #tom is 28 years old print("Hi, {0}! {0} is {1} years old".format("tom", 28)) #Hi, tom! tom is 28 years old #2. 關鍵字引數 print("{name} is {age} years old".format(name = "tom", age = 28)) #tom is 28 years old #3. 下標引數 li = ["tom", 28] print("{0[0]} is {0[1]} years old".format(li)) #tom is 28 years old
2、字串方法
1. find方法
作用:find方法可以在一個較長的字串中查詢子串,他返回子串所在位置的最左端索引,如果沒有找到則返回-1
a = 'abcdefghijk' print(a.find('abc')) #the result : 0 print(a.find('abc',10,100)) #the result : 11 指定查詢的起始和結束查詢位置
2. join方法
作用:join方法是非常重要的字串方法,他是split方法的逆方法,用來連線序列中的元素,並且需要被連線的元素都必須是字串。
a = ['1','2','3'] print('+'.join(a)) #the result : 1+2+3
3. split方法
作用:這是一個非常重要的字串,它是join的逆方法,用來將字串分割成序列
print('1+2+3+4'.split('+')) #the result : ['1', '2', '3', '4']
4. strip
作用:strip 方法返回去除首位空格(不包括內部)的字串
print(" test test ".strip()) #the result :“test test”
5. replace
作用:replace方法返回某字串所有匹配項均被替換之後得到字串
print("This is a test".replace('is','is_test')) #the result : This_test is_test a test
6、首字母大寫
>>> s = 'aBdkndfkFFD' >>> s.capitalize() 'Abdkndfkffd'
7、Pinyin 模組,將漢字轉換成拼音
#! /usr/bin/env python # -*- coding: utf-8 -*- from xpinyin import Pinyin while True: p = Pinyin() fullname = raw_input('name:').strip() fullname = fullname.decode('utf8') print fullname xin = fullname[0] ming = fullname[1:] name = ming + '.' + xin username = p.get_pinyin(name, '') print username print username + '@yiducloud.cn'
1.3 字典
1、字典基本使用
I. 鍵型別:字典的鍵不一定為整形資料,鍵可以是任意的不可變型別,比如浮點型(實行),字串或者元組。
II. 自動新增:即使鍵起初在字典中不存在,也可以為他賦值,這樣字典就會建立新的項。而(在不適用append方法或者其他類似操作的情況下)不能將值關聯到列表之外的索引上。
phonebook = {'Tom':8777,'Jack':9999,'Fly':6666} print("Tom's Phonenumber is %(Tom)s" % phonebook) #Tom's Phonenumber is 8777
2、字典常用方法
1. clear
作用:clear方法清除字典中所有的項,這是一個原地操作,所以無返回值(或則說返回None)
d = {} d['Tom']=8777 d['Jack']=9999 print(d) #the result : {'Jack': 9999, 'Tom': 8777} d.clear() print(d)
2. copy
作用:copy方法返回一個具有相同 ”鍵-值” 對的新字典,而不是副本
d = {'Tom':8777,'Fly':6666} a = d.copy() a['Tom'] = '改變後的值' print(d) #{'Fly': 6666, 'Tom': 8777} print(a) #{'Fly': 6666, 'Tom': '改變後的值'}
3.fromkeys
作用:fromkeys方法使用給定的鍵建立新的字典,每個鍵都對應一個預設的值None。
首先建造一個空字典,然後呼叫它的fromkeys方法,建立另一個字典
print({}.fromkeys(['name','age'])) #the result : {'age': None, 'name': None}
4. get
作用:get方法是個更寬鬆的訪問字典項的方法,如果試圖訪問字典中不存在的項時不會報錯僅會 返回:None
d = {'Tom':8777,'Jack':8888,'Fly':6666} print(d.get('Tom')) #the result : 8777 print(d.get('not_exist')) #the result : None
5. for迴圈字典的三種方法
d = {'Tom':8777,'Jack':8888,'Fly':6666} for k,v in d.items(): print(k,v) for k in d.values(): print(k) for k in d.keys(): print(k)
6. pop
作用:pop方法用於獲得對應與給定鍵的值,然後將這個”鍵-值”對從字典中移除
d = {'Tom':8777,'Jack':8888,'Fly':6666}
v = d.pop('Tom')
print(v) #8777
7.popitem
① popitem方法類似於list.pop,list.pop會彈出列表的最後一個元素,但是popitem僅僅會彈出隨機的項,因為字典沒有”最後的元素”或則其他有關順序的概念
② 所以想一個接一個的移除並處理字典中的項,popitem是非常有效的(因為不用獲取鍵的列表)
③ 儘管popitem和列表的pop方法很類似,但是字典中沒有與append等價的方法,因為字典是無序的,類似於append得方法是沒有任何意義的
d = {'Tom':8777,'Jack':8888,'Fly':6666} d.popitem()
8.setdefault
作用:setdefault方法在某種程度上類似於get方法,能夠獲得與給定鍵相關聯的值,除此之外,setdefault還能在字典中不含有給定鍵的情況下設定相應的鍵值
d = {'Tom':8777,'Jack':8888,'Fly':6666} d.setdefault('Tom') #the result : 8777 print(d.setdefault('Test')) #the result : None print(d) #{'Fly': 6666, 'Jack': 8888, 'Tom': 8777, 'Test': None}
9. update
作用:update方法可以利用一個字典項更新另一個字典,提供的字典中的項會被新增到舊的字典中,如有相同的鍵則會被覆蓋
d = {'Tom':8777,'Jack':8888,'Fly':6666} a = {'Tom':110,'Test':119} d.update(a) print(d) #the result :{'Fly': 6666, 'Test': 119, 'Jack': 8888, 'Tom': 110}
10. 將兩個列表組合成字典
keys = ['a', 'b'] values = [1, 2]
#1、zip生成字典 print(dict(zip(keys,values))) # {'a': 1, 'b': 2} #2、for迴圈推倒字典 print({keys[i]: values[i] for i in range(len(keys))}) # {'a': 1, 'b': 2}
1.4 集合
1、集合作用
1. 去重
2.取兩個列表的交集
3. 取兩個列表的並集
list_1 = [1,2,3,4,5,1,2] #1、去重(去除list_1中重複元素1,2) list_1 = set(list_1) #去重: {1, 2, 3, 4, 5} print(list_1) list_2 = set([4,5,6,7,8]) #2、交集(在list_1和list_2中都有的元素4,5) print(list_1.intersection(list_2)) #交集: {4, 5} #3、並集(在list_1和list_2中的元素全部打印出來,重複元素僅列印一次) print(list_1.union(list_2)) #並集: {1, 2, 3, 4, 5, 6, 7, 8} #4、差集 print(list_1.difference(list_2)) #差集:在list_1中有在list_2中沒有: {1, 2, 3} print(list_2.difference(list_1)) #差集:在list_1中有在list_2中沒有: {8, 6, 7} #5、子集 print(list_1.issubset(list_2)) #子集: False List_1中的元素是否全部在list2中 #6、父集 print(list_1.issuperset(list_2)) #父集: False List_1中是否包含list_2中的所有元素 #7、交集 print(list_1 & list_2) #交集 {4, 5} #8、union並集 print(list_1 | list_2) #並集: {1, 2, 3, 4, 5, 6, 7, 8} #9、difference差集 print(list_1 - list_2) #差集: {1, 2, 3} #10、在集合中新增一個元素999 list_1.add(999) print(list_1) #Add()方法: {1, 2, 3, 4, 5, 999} #11、刪除集合中任意一個元素不會列印刪除的值 list_1.pop() #Pop()方法: 無返回值 #12、discard刪除集合中的指定元素,如過沒有則返回None print(list_1.discard("ddd")) #Discard()方法: 刪除指定的值,沒有返回None