數據類型的回顧與總結
可變與不可變
1.可變:列表,字典
2.不可變:字符串,數字,元組
訪問順序:
1.直接訪問:數字
2.順序訪問:字符串,列表,元祖
3.映射:字典
存放元素個數:
容器類型:列表,元祖,字典
原子:數字,字符串
set 集合
一、集合的基本屬性
1.不同元素組成
2.無序
3.集合中元素必須是不可變類型(字符串,數字,元組)

s = {1,2,3,4,5,6} s = {1,2,3,3,3,3,3} print(type(s)) print(s) #<class 'set'> #{1, 2, 3}
定義方式
s = set('hello') print (s) #{'h', 'e', 'l', 'o'} s1 = set('hello') print(s1) s2 = set(['root','root','even']) print(s2) #{'e', 'o', 'l', 'h'} #{'even', 'root'}
set 集合 使用 for 循環里面的類型
如果有重復的值,則丟棄
二、集合的方法
1.add
添加,只能更新一個值,更新多個值使用 update

s = {1,2,3,4,5,6} s.add('s') print(s) #{1,2,3,4,5,6,'s'}
2.clear
清除

s = {1,2,3,4,5,6} s.clear() print(s) #set()
3.copy
拷貝值

s1 = {1,2,3,4,5,6} s2 = s1.copy() print(s2) #{1, 2, 3, 4, 5, 6}
4.pop
隨機刪除一個值,並保留該值

s = {'e',1,2,3,4,5,6} n = s.pop() print(s) print(n) #{2, 3, 4, 5, 6, 'e'} #1
5.remove
刪除指定值,若刪元素不存在,IDEA會報錯

s = {'e',1,2,3,4,5,6} s.remove('e') print(s) #{1, 2, 3, 4, 5, 6} 注意: s = {'e',1,2,3,4,5,6} s.remove('root') #刪除元素不存在,會報錯 print(s)
6.discard
刪除指定值,若要刪除的元素不存在,IDEA不會報錯

s = {'e',1,2,3,4,5,6} s.discard('root') #刪除元素不存在,不會報錯 print(s) #{1, 2, 3, 4, 5, 6, 'e'}
三、集合關系運算
現在有兩個列表,求他們的交集
足球隊人員是張三、李四、王五
籃球隊人員是張三、王五、趙六
football = ['張三','李四','王五'] basketball = ['張三','王五','趙六'] #會踢足球的人員和會打籃球的人員 #如果不使用set集合的方式,使用list方式進行for循環,輸出兩門球類運動都會的人 all = [] #定義一個兩門都會的空列表 for f in football: #將football內的元素for循環 if f in basketball: #如果這些元素也在basketball內 all.append(f) #添加這些元素進入[]空列表 print(all) #['張三', '王五']
1.intersection() 交集
通過 set的方法完成上面的要求
football = ['張三','李四','王五'] basketball = ['張三','王五','趙六'] #會踢足球的人員和會打籃球的人員 #使用set交集的方式,輸出兩門球類運動都會的人 f_s = set(football) #將football轉換為f_s集合 b_s = set(basketball) #將basketball轉換為b_s集合 print(f_s,b_s) print(f_s.intersection(b_s)) #取f_s和b_s的交集 #{'張三', '王五', '李四'} {'張三', '王五', '趙六'} #{'張三', '王五'}
2.union() 並集

football = ['張三','李四','王五'] basketball = ['張三','王五','趙六'] #會踢足球的人員和會打籃球的人員 #使用set並集的方式,輸出兩類總共人數 f_s = set(football) #將football轉換為f_s集合 b_s = set(basketball) #將basketball轉換為b_s集合 print(f_s,b_s) print(f_s.union(b_s)) #取f_s和b_s的交集 #{'王五', '張三', '李四'} {'趙六', '張三', '王五'} #{'趙六', '張三', '李四', '王五'}
3.difference()差集

football = ['張三','李四','王五'] basketball = ['張三','王五','趙六'] f_s = set(football) #將football轉換為f_s集合 b_s = set(basketball) #將basketball轉換為b_s集合 print('差集1',f_s - b_s) #f_s.difference(b_s) 等同於 f_s - b_s print(f_s.difference(b_s)) print('差集2',b_s - f_s) #b_s.difference(f_s) 等同於 b_s - f_s print(b_s.difference(f_s)) #差集1 {'李四'} #{'李四'} #差集2 {'趙六'} #{'趙六'}
4.symmetric_difference() 交叉補集

football = ['張三','李四','王五'] basketball = ['張三','王五','趙六'] f_s = set(football) #將football轉換為f_s集合 b_s = set(basketball) #將basketball轉換為b_s集合 print(f_s.symmetric_difference(b_s)) #f_s.difference(b_s) 等同於 f_s ^ b_s #{'李四', '趙六'}
PS:這幾類方法后面加.update是求完值之后重新賦值
5.isdisjoint issubset issuperset
判斷有無交集 判斷是否是子集 判斷是否是父集
6.update
更新多個值 和add不同的是 add只能添加單個值
s = {'s','g','h'} s.update('e','n',(10,1),[22,33],{50:2,30:4}) print(s) #字符串和所有可迭代對象都可以被update添加
#{1, 33, 'e', 10, 's', 50, 22, 'g', 'h', 30, 'n'}
字符串的格式化
一、常用格式化
%字符的用處
msg = 'i am %s my hobby is %s' % ('even','python') print(msg) #i am even my hobby is python
msg1 = 'i am %s my hobby is %s' % ('even',123) msg2 = 'i am %s my hobby is %s' % ('even',[1,2]) print(msg1) print(msg2) #i am even my hobby is 123 #i am even my hobby is [1,2]
打印浮點數
tpl = "percent %.2f" % 99.976238888 #.2f保留浮點數后兩位 print(tpl) #percent 99.98
打印百分比
tpl = 'percent %.2f %%' % 99.976238888 print(tpl) #percent 99.98 %
:分隔符拼接
print('root','x','0','0',sep=':') #root:x:0:0
二、format 的常用格式化
tpl = "i am {}, age {}, {}".format("seven", 18, 'alex') tpl = "i am {}, age {}, {}".format(*["seven", 18, 'alex']) tpl = "i am {0}, age {1}, really {0}".format("seven", 18) tpl = "i am {0}, age {1}, really {0}".format(*["seven", 18]) tpl = "i am {name}, age {age}, really {name}".format(name="seven", age=18) tpl = "i am {name}, age {age}, really {name}".format(**{"name": "seven", "age": 18}) tpl = "i am {0[0]}, age {0[1]}, really {0[2]}".format([1, 2, 3], [11, 22, 33]) tpl = "i am {:s}, age {:d}, money {:f}".format("seven", 18, 88888.1) tpl = "i am {:s}, age {:d}".format(*["seven", 18]) tpl = "i am {name:s}, age {age:d}".format(name="seven", age=18) tpl = "i am {name:s}, age {age:d}".format(**{"name": "seven", "age": 18}) tpl = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2) #進制互轉格式化 tpl = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2) tpl = "numbers: {0:b},{0:o},{0:d},{0:x},{0:X}, {0:%}".format(15) tpl = "numbers: {num:b},{num:o},{num:d},{num:x},{num:X}, {num:%}".format(num=15)
**代表字典對應格式化
tpl = "i am {name:s}, age {age:d}".format(**{"name": "seven", "age": 18}) print(tpl)
*代表列表對應格式化
tpl = "i am {:s}, age {:d}".format(*["seven", 18]) print(tpl)