[toc]
一帜矾、進(jìn)制
- 二進(jìn)制:逢2進(jìn)1翼虫,0 1 (只有0和1兩個(gè)數(shù))
- 八進(jìn)制:逢8進(jìn)1,0 1 2 3 4 5 6 7 (8個(gè)數(shù)字)
- 十進(jìn)制:逢10進(jìn)1屡萤,0 1 2 3 4 5 6 7 8 9 (10個(gè)數(shù)字)
- 十六進(jìn)制:逢16進(jìn)1珍剑,0 1 2 3 4 5 6 7 8 9 A B C D E F (16個(gè)數(shù)字,A=10死陆,B=11招拙,C=12,D=13措译,E=14别凤,F(xiàn)=15)
進(jìn)制對(duì)應(yīng):
|十六進(jìn)制|0|1|2|3|4|5|6|7|8|9|A|B|C|D|E|F|10|
|:-:|
|十進(jìn)制|0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|
|八進(jìn)制|0|1|2|3|4|5|6|7|10|11|12|13|14|15|16|17|20|
|二進(jìn)制|0|1|10|11|100|101|110|111|1000|1001|1010|1011|1100|1101|1110|1111|10000|
進(jìn)制轉(zhuǎn)換:
-
十進(jìn)制轉(zhuǎn)二進(jìn)制:除2取余,不夠除领虹,取0余1规哪,以53為例,如下圖:
十進(jìn)制轉(zhuǎn)二進(jìn)制 -
十進(jìn)制轉(zhuǎn)八進(jìn)制:
十進(jìn)制轉(zhuǎn)八進(jìn)制 -
十進(jìn)制轉(zhuǎn)十六進(jìn)制:
Paste_Image.png 二進(jìn)制轉(zhuǎn)十進(jìn)制:裝水桶法:
-
十六進(jìn)制轉(zhuǎn)二進(jìn)制:
十六進(jìn)制轉(zhuǎn)二進(jìn)制
二塌衰、數(shù)據(jù)類型
1诉稍、str 字符串
字符串是不可變的數(shù)據(jù)類型
1.capitalize
字符串首字母大寫
name = 'alex'
v = name.capitalize()
print(name)
print(v)
2. casefold
將所有大寫變小寫(也可以將歐洲的一些特殊大寫字母變?yōu)樾懀?/p>
name = 'AleX'
v = name.casefold() # 注意,有些python版本可能沒有這個(gè)方法猾蒂,我的python3.5.2就沒有均唉,不必太在意
print(name)
print(v)
3. swapcase
將大寫轉(zhuǎn)小寫,小寫轉(zhuǎn)大寫
name = 'AleX'
a = name.swapcase()
print(name)
print(a)
4. lower
將所有大小變小寫
name = 'AleX'
v = name.lower()
print(v)
5. upper
將所有小寫變大寫
name = 'alex'
v = name.upper()
print(v)
6. center
文本居中肚菠,兩邊用指定字符填充
# 參數(shù)1: 表示總長(zhǎng)度
# 參數(shù)2:空白處填充的字符(長(zhǎng)度為1)
name = 'alex'
v = name.center(20,'#')
print(v)
輸出:
########alex########
7. count
表示傳入字符或子字符串在大字符串中出現(xiàn)的次數(shù)
# 參數(shù)1: 要查找的值(子序列)
# 參數(shù)2: 起始位置(索引)
# 參數(shù)3: 結(jié)束位置(索引)
name = "alexasdfdsafsdfasdfaaaaaaaa"
v = name.count('a')
print(v)
v1 = name.count('df')
print(v1)
輸出:
12
3
name = "alexasdfdsafsdfasdfaaaaaaaa"
v = name.count('df',12)
print(v)
v = name.count('df',0,15)
print(v)
輸出:
2
2
8. startswith
是否以XXX開頭舔箭,返回True 或 False
name = 'alex'
v2 = name.startswith('al')
print(v2)
9. endswith
是否以xx結(jié)尾
name = 'alex'
v1 = name.endswith('ex')
print(v1)
10. expandtabs
找到制表符\t,進(jìn)行替換(包含前面的值)
name = "al\te\tx\nalex\tuu\tkkk"
v = name.expandtabs(20)
print(v)
輸出:
al e x
alex uu kkk
11. find
找到指定子序列的索引位置:不存在返回-1
name = 'alex'
v = name.find('e')
print(v)
12. index
找到指定子序列的索引位置:不存在報(bào)錯(cuò)
name = 'alex'
v = name.index('o')
print(v)
13. format
字符串格式化
- 方法1.
tpl = "我是:{0};年齡:{1};性別:{2}" #位置必須一一對(duì)應(yīng)
v = tpl.format("李杰",19,'都行')
print(v)
輸出:
我是:李杰;年齡:19;性別:都行
- 方法2.
tpl = "我是:{name};年齡:{age};性別:{gender}"
v = tpl.format(name='李杰',age=19,gender='隨意')
print(v)
14. format_map
字符串格式化,以字典的形式賦值
tpl = "我是:{name};年齡:{age};性別:{gender}"
v = tpl.format_map({'name':"李杰",'age':19,'gender':'中'})
print(v)
輸出:
我是:李杰;年齡:19;性別:中
15. isalnum
是否是數(shù)字蚊逢、漢字层扶、字母秩铆,如果包含符號(hào)返回False
name = 'alex8漢子'
v = name.isalnum() # 字,數(shù)字
print(v) # True
16. isalpha
是否是純字母
name = 'alex8漢子'
v2 = name.isalpha()#
print(v2) # False
17. isdecimal 园爷、isdigit 、isnumeric
判斷是否是數(shù)字
num = '②'
v1 = num.isdecimal() # 可識(shí)別 '123'
v2 = num.isdigit() # 可識(shí)別 '123'琳钉,'②'
v3 = num.isnumeric() # 可識(shí)別 '123'终抽,'二'戳表,'②'
print(v1,v2,v3)
18. isidentifier
是否是符號(hào)規(guī)范的標(biāo)示符(變量名)
n = 'name'
v = n.isidentifier()
print(v)
19. islower、isupper
是否全部是小寫或大寫
name = "ALEX"
v = name.islower() # 是否全是小寫
print(v)
v = name.isupper() # 是否全是大寫
print(v)
20. isprintable
判斷是否包含不可打印的字符(如: “\n”昼伴、"\t"等)匾旭,包含返回False,不包含返回True
name = "釣魚要釣刀魚圃郊,\n刀魚要到島上釣"
v = name.isprintable()
print(v)
21. isspace
是否全部是空格
name = ' '
v = name.isspace()
print(v)
22. join
元素拼接
name = 'alex'
v = "_".join(name) # 內(nèi)部循環(huán)每個(gè)元素
print(v)
輸出:
a_l_e_x
name_list = ['海峰','杠娘','李杰','李泉']
v = "搞".join(name_list)
print(v)
輸出:
海峰搞杠娘搞李杰搞李泉
23. ljust 价涝、rjust
左右填充
name = 'alex'
v = name.rjust(20,' ')
v1 = name.ljust(20,' ')
print(v)
print(v1)
輸出:
alex
alex
24. maketrans 、translate
對(duì)應(yīng)關(guān)系 + 翻譯
m = str.maketrans('aeiou','12345') # 對(duì)應(yīng)關(guān)系
name = "aaeeiioouu"
v = name.translate(m) # 依照對(duì)應(yīng)關(guān)系翻譯
print(v)
輸出:
1122334455
25. partition
分割持舆,保留被當(dāng)作分割符的元素 色瘩。split 方法不會(huì)保留被當(dāng)作分割符的元素伪窖。
content = "李泉愛劉康愛劉一"
v = content.partition('愛') # partition
print(v)
v1 = content.split('愛')
print(v1)
輸出:
('李泉', '愛', '劉康愛劉一')
['李泉', '劉康', '劉一']
partition 分割后的值是元組類型,并且只能以第一個(gè)分割符分割
split 分割后的值是列表類型
26. replace (替換)
content = "李泉SB劉康SB劉浩SB劉一"
v = content.replace('SB','Love')
print(v)
v = content.replace('SB','Love',1) # 只替換第1個(gè)
print(v)
輸出:
李泉Love劉康Love劉浩Love劉一
李泉Love劉康SB劉浩SB劉一
27. zfill
填充0居兆,包含已存在字符
name = "alex"
v = name.zfill(20)
print(v)
輸出:
0000000000000000alex
28. 額外功能:
# name = "alex"
# name[0]
# name[0:3]
# name[0:3:2]
# len(name)
# for循環(huán)覆山,每個(gè)元素是字符
2. int 整數(shù)
1. bit_length
當(dāng)前整數(shù)用二進(jìn)制表示時(shí)占用幾個(gè)二進(jìn)制位
age = 4 # 二進(jìn)制為100
print(age.bit_length())
輸出:
3
2. to_bytes
獲取當(dāng)前數(shù)據(jù)的字節(jié)表示
age = 15
v = age.to_bytes(10,byteorder='big')
v1 = age.to_bytes(10,byteorder='little')
print(v)
print(v1)
輸出:
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f'
b'\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00'
3. 布爾值(bool)
布爾值只有True和False
* 轉(zhuǎn)換
*
* 數(shù)字轉(zhuǎn)布爾值,只有0是False史辙,其他都為True汹买;
* 字符串轉(zhuǎn)布爾值,只有”“(空)是False聊倔,其他都為True晦毙;
4. list 列表
1) append (追加)
user_list = ['李泉','劉一','劉康','豆豆','小龍'] # 可變類型
user_list.append('劉銘')
print(user_list)
2) clear (清空)
user_list = ['李泉','劉一','劉康','豆豆','小龍'] # 可變類型
user_list.clear()
print(user_list)
3) copy (拷貝(淺拷貝))
user_list = ['李泉','劉一','劉康','豆豆','小龍'] # 可變類型
v = user_list.copy()
print(v)
print(user_list)
4) count (計(jì)數(shù))
user_list = ['李泉','劉一','李泉','劉康','豆豆','小龍'] # 可變類型
v = user_list.count('李泉')
print(v)
輸出:
2
5) extend (擴(kuò)展原列表)
user_list = ['李泉','劉一','李泉','劉康','豆豆','小龍']
user_list.extend(['郭少龍','郭少霞'])
print(user_list)
輸出:
['李泉', '劉一', '李泉', '劉康', '豆豆', '小龍', '郭少龍', '郭少霞']
6) index
查找元素索引,沒有會(huì)報(bào)錯(cuò)
user_list = ['李泉','劉一','李泉','劉康','豆豆','小龍']
v = user_list.index('劉康')
print(v)
7) pop
通過索引刪除元素耙蔑,并且返回被刪除的元素
ser_list = ['李泉','劉一','李泉','劉康','豆豆','小龍'] # 可變類型
v = user_list.pop(1)
print(v)
print(user_list)
輸出:
劉一
['李泉', '李泉', '劉康', '豆豆', '小龍']
8) remove
通過指定元素來刪除元素
user_list = ['李泉','劉一','李泉','劉康','豆豆','小龍'] # 可變類型
user_list.remove('劉一')
print(user_list)
9) reverse (翻轉(zhuǎn))
user_list = ['李泉','劉一','李泉','劉康','豆豆','小龍'] # 可變類型
user_list.reverse()
print(user_list)
輸出:
['小龍', '豆豆', '劉康', '李泉', '劉一', '李泉']
10) sort (排序)
nums = [11,22,3,3,9,88]
print(nums)
# 排序见妒,從小到大
nums.sort()
print(nums)
# 從大到小
nums.sort(reverse=True)
print(nums)
11) 額外操作
user_list = ['李泉','劉一','李泉','劉康','豆豆','小龍']
user_list[0] # 通過索引獲取值
user_list[1:5:2] # 切片,步長(zhǎng)
del user_list[3] # 通過索引刪除元素
for i in user_list: #循環(huán)列表
print(i)
user_list[1] = '姜日天' #通過索引修改元素值
5. 元組
- 元組可以看作是只讀列表甸陌,元組內(nèi)的元素不可修改
定義元組:
user_tuple = ('alex','eric','seven','alex')
1) count (計(jì)數(shù))
user_tuple = ('alex','eric','seven','alex')
v = user_tuple.count('alex')
print(v)
2) index
獲取值的第一個(gè)索引位置
user_tuple = ('alex','eric','seven','alex')
v = user_tuple.index('alex')
print(v)
3) 額外操作
user_tuple = ('alex','eric','seven','alex')
for i in user_tuple: # 遍歷元組中的元素
print(i)
v = user_tuple[0] # 獲取元組內(nèi)的元素
v = user_tuple[0:2] # 切片
print(v)
4) 元組嵌套列表
user_tuple = ('alex','eric','seven',['陳濤','劉浩','趙芬芬'],'alex')
#user_tuple[0] = 123 #x錯(cuò)誤
#user_tuple[3] = [11,22,33] #x錯(cuò)誤须揣,不可以修改元組中的元素本身
user_tuple[3][1] = '劉一' # 可以修改元組中嵌套的列表中的元素
print(user_tuple)
總結(jié):元組中元素是可變的數(shù)據(jù)類型時(shí),那么可以修改此元素內(nèi)的子元素钱豁,但是不可以替換此元素耻卡;元組中的元素是不可變的數(shù)據(jù)類型時(shí),則不可以修改牲尺。
5) 元組注意事項(xiàng)
定義元組時(shí)卵酪,在元組的最后一個(gè)元素后面盡量跟一個(gè)逗號(hào)
因?yàn)楫?dāng)元組中只有一個(gè)元素時(shí),如果沒在元素后邊加逗號(hào)谤碳,則會(huì)將這個(gè)元組當(dāng)成一個(gè)字符串溃卡,示例代碼:
li = ('alex')
print(li)
print(type(li))
輸出:
alex
<class 'str'>
加上逗號(hào)后:
li = ('alex',)
print(li)
print(type(li))
輸出:
('alex',)
<class 'tuple'>
6. dict 字典
字典也是可變的數(shù)據(jù)類型
字典的特性:
- dict是無序的
- key必須是唯一的,so 天生去重
1) clear (清空)
dic = {'k1':'v1','k2':'v2'}
dic.clear()
print(dic)
2) copy (淺拷貝)
dic = {'k1':'v1','k2':'v2'}
v = dic.copy()
print(v)
3) get
根據(jù)key獲取指定的value;不存在不報(bào)錯(cuò)
dic = {'k1':'v1','k2':'v2'}
v = dic.get('k1111',111) # 不存在會(huì)返回給定值111蜒简,沒有指定值會(huì)返回None
print(v)
v = dic['k1111'] # 不存在會(huì)報(bào)錯(cuò)
print(v)
4) pop
刪除鍵并獲取對(duì)應(yīng)的value值
dic = {'k1':'v1','k2':'v2'}
v = dic.pop('k1')
print(dic)
print(v)
輸出:
{'k2': 'v2'}
v1
5) popitem
隨機(jī)刪除鍵值對(duì)瘸羡,并獲取到刪除的鍵值
dic = {'k1':'v1','k2':'v2'}
v = dic.popitem()
print(dic)
print(v)
輸出:
{'k2': 'v2'}
('k1', 'v1')
另一種玩法:
dic = {'k1':'v1','k2':'v2'}
v = dic.popitem() # ('k2', 'v2')
print(dic)
print(v[0],v[1])
輸出:
{'k2': 'v2'}
k1 v1
另一種玩法:
dic = {'k1':'v1','k2':'v2'}
k,v = dic.popitem() # ('k2', 'v2')
print(dic)
print(k,v)
輸出:
{'k2': 'v2'}
k1 v1
6) setdefault
增加,如果存在則不做操作
dic = {'k1':'v1','k2':'v2'}
dic.setdefault('k3','v3') # 將第1個(gè)參數(shù)設(shè)為key,第2個(gè)參數(shù)設(shè)為value
print(dic)
dic.setdefault('k1','1111111') # k1是存在的搓茬,看輸出的結(jié)果是否有變化
print(dic)
輸出:
{'k2': 'v2', 'k3': 'v3', 'k1': 'v1'}
{'k2': 'v2', 'k3': 'v3', 'k1': 'v1'}
7) update
批量增加或修改犹赖;無,則增加卷仑;有冷尉,則修改
dic = {'k1':'v1','k2':'v2'}
dic.update({'k3':'v3','k1':'v24'})
print(dic)
輸出:
{'k2': 'v2', 'k3': 'v3', 'k1': 'v24'}
8) fromkeys
通過一個(gè)列表生成默認(rèn)dict,有個(gè)沒辦法解釋的坑,少用這個(gè)吧
dic = dict.fromkeys(['k1','k2','k3'],123)
print(dic)
dic = dict.fromkeys(['k1','k2','k3'],123)
dic['k1'] = 'abc'
dic['k2'] = 'ABC'
print(dic)
輸出:
{'k2': 123, 'k3': 123, 'k1': 123}
{'k2': 'ABC', 'k3': 123, 'k1': 'abc'}
注意這個(gè)坑:
dic = dict.fromkeys(['k1','k2','k3'],[1,])
dic['k1'].append(222)
print(dic)
輸出:
{'k2': [1, 222], 'k3': [1, 222], 'k1': [1, 222]}
注意:以上代碼系枪,本來我只想對(duì)k1的value進(jìn)行追加一個(gè)值222,但是從打印的結(jié)果看磕谅,k1私爷、k2雾棺、k3的value均被追加了這個(gè)值。
9) 額外操作
- 字典可以嵌套
- 字典key: 必須是不可變類型
例:可以這樣定義一個(gè)字典衬浑,各種嵌套
dic = {
'k1': 'v1',
'k2': [1,2,3,],
(1,2): 'lllll',
1: 'fffffffff',
111: 'asdf',
}
print(dic)
輸出:
{(1, 2): 'lllll', 'k2': [1, 2, 3], 111: 'asdf', 1: 'fffffffff', 'k1': 'v1'}
# 刪除key
dic = {'k1':'v1'}
del dic['k1']
7. set 集合
集合捌浩,是不可重復(fù)的列表;可變的數(shù)據(jù)類型
集合創(chuàng)建
# 兩種方法:
a = {1,2,3,4,5}
b = set([4,5,6,7,8])
集合運(yùn)算
名稱 | 英文方法 | 運(yùn)算符號(hào) | 功能 | 釋義 |
---|---|---|---|---|
交集 | a.intersection(b) | a & b | a與b 的交集 | a與b都存在的值 |
并集 | a.union(b) | a (管道符) b | a與b的并集 | 將a與b融合在一起工秩,去除重復(fù)的值 |
差集 | a.difference(b) | a - b (減號(hào)) | 差集尸饺,in a but not in b | a中存在的,且b中不存在的 |
對(duì)稱差集 | a.symmetric_difference(b) | a ^ b | a與b 的對(duì)稱差集 | 將a和b整合,去除a與b都有的值 |
子集 | a.issubset(A) | 無 | 判斷a 是A 的子集 | 判斷a是否存在于A中 |
父集 | print(A.issuperset(a)) | 無 | 判斷A 是a 的父集 | 判斷A是否包含a |
總結(jié):對(duì)稱差集 等于 并集 減 交集
1. isdisjoint
判斷兩個(gè)集合是否存在交集
a.isdisjoint(c) # a與c 存在交集返回False助币,不存在交集返回True
2. difference_update
獲取s1 與s2的差集浪听,并重新賦值給s1
s1 = {"alex",'eric','tony','李泉','李泉11'}
s2 = {"alex",'eric','tony','劉一'}
s1.difference_update(s2)
print(s1)
輸出:
{'李泉11', '李泉'}
3. discard(丟棄)
丟棄集合中指定的元素,如果集合中沒有此元素眉菱,則不做操作
s1 = {"alex",'eric','tony','李泉','李泉11'}
s1.discard('alex')
print(s1)
4. remove (移除)
有迹栓,則移除;沒有俭缓,則報(bào)錯(cuò)
s1 = {"alex",'eric','tony','李泉','李泉11'}
s1.remove("alex")
print(s1)
5. update
更新集合克伊,已有的元素,不變华坦,沒有愿吹,則添加
s1 = {"alex",'eric','tony','李泉','李泉11'}
s1.update({'alex','123123','fff'})
print(s1)
輸出:
{'alex', 'tony', '123123', 'eric', 'fff', '李泉', '李泉11'}
6. pop (隨機(jī)刪除)
隨機(jī)刪除并返回被刪除的集合元素,如果集合為空,則報(bào)錯(cuò)惜姐。
s1 = {"alex",'eric','tony','李泉','李泉11'}
v = s1.pop()
print(s1)
print(v)
輸出:
{'李泉11', 'alex', 'tony', '李泉'}
eric
7. add (添加)
無犁跪,則添加;有载弄,則不做操作
s1 = {"alex",'eric','tony'}
s1.add('seven')
print(s1)
輸出:
{'seven', 'tony', 'alex', 'eric'}
8. symmetric_difference_update
取對(duì)稱差集重新賦值給s1
s1 = {1,2,3,4}
s2 = {3,4,5,6}
s1.symmetric_difference_update(s2)
print(s1)
輸出:
{1, 2, 5, 6}
9. 遍歷集合
s1 = {11,22,33,44}
for i in s1:
print(i)
輸出:
33
11
44
22