python_基礎類型
【python的基本數據類型及進制掃盲】
一、進制
1.進制簡介
進制就是進位制,是人們規定的一種進位方法。計算機底層的數據運算和存儲都是二進制數據。計算機語言就是二進制,計算機能直接識別二進制數據,其它數據都不能直接識別。
2.常用進制
對於任何一種進制---X進制,就表示某一位置上的數運算時是逢X進一位。 十進制是逢十進一,十六進制是逢十六進一,二進制就是逢二進一,以此類推,x進制就是逢x進位。我們經常使用的是二進制、八進制、十進制、十六進制。
- 十進制:有10個基本數字,分別為0、1、2、3、4、5、6、7、8、9,運算規則”逢十進一”;
- 八進制:有8個基本數字,分別為0、1、2、3、4、5、6、7,運算規則”逢八進一”
-
十六進制:有16個基本數字,分別為0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,運算規則”逢十六進一”。
- 二進制:有2個基本數字,分別為0、1,運算規則”逢二進一”。
3.進制轉換
我們有最常用的轉換方法:用十進制數據除以目標進制得到余數,並將余數從最後一個到第一個排列,就是轉換後的目標進制表示形式(簡稱“除基取余,直到商為0,余數反轉”)。以十進制43向二進制轉換為例:
得到的數值排列:101011,所以十進制43的二進制表示形式為101011,同理,如果求八進制、十六進制表示形式,用43除以8、16即可。
二、基本數據類型
1.字符串
類:str
方法:選中str,按住command(ctrl)+左鍵跳轉至對應的方法
字符串常用方法歸納如下:
- 1)capitalize
功能:實現字符串首字母大寫,自身不變,會生成一個新的值
capitalize例子:
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 name = ‘hexin‘ 4 v = name.capitalize() #調用str類,執行其中capitalize的方法 5 print(v)
輸出:
hexin Hexin
- 2)casefold
功能:將所有大寫變成小寫,另外支持多門語言變化
casefold例子:
1 name = ‘HexIn‘ 2 v = name.casefold() 3 print(name) 4 print(v)
輸出:
HexIn hexin
- 3)lower,upper
功能:
lower:將所有的大寫變小寫,局限英文
upper:將所有小寫變大寫
lower
例子:
1 name = ‘HeXin‘ 2 v = name.lower() 3 print(name) 4 print(v)
結果:
HeXin hexin
- 4)center
功能:文本居中,空白處填充字符
參數1:表示總長度;參數2:空白處填充的字符(長度為1)
center例子:
1 name = ‘HeXin‘ 2 v = name.center(20,‘*‘) 3 print(name) 4 print(v)
輸出:
HeXin *******HeXin********
- 5)count
功能:表示要查找的子序列在字符串中出現的次數
參數1:要查找的值(子序列);參數2:起始位置(索引);參數3:結束位置(索引)
count例子:
1 name = ‘HeXinddaklfjsl;dfjcnljdajsflajdf‘ 2 v = name.count(‘a‘) 3 i = name.count(‘a‘,0,15) 4 print(name) 5 print(v) 6 print(i)
輸出:
3 1
- 6)endswith
功能:判斷是否以xx結尾
參數1:判斷值;參數2,3:起始和結束的位置(個數)
endswith例子:
1 name = ‘HeXinddaklfjsl;dfjcnljdajsflajdf‘ 2 v = name.endswith(‘df‘) 3 i = name.endswith(‘n‘,0,5) 4 print(name) 5 print(v) 6 print(i)
輸出:
HeXinddaklfjsl;dfjcnljdajsflajdf True True
- 7)expandtabs
功能:找到制表符\t,進行替換(包含前面的值)
expandtabs例子:
1 name = "al\te\tx\nalex\tuu\tkkk" 2 v = name.expandtabs(5) #包含前面的值,5個長度 3 print(v)
輸出:
al e x alex uu kkk
- 8)find
功能:找到指定子序列的索引位置,不存在返回-1
find例子:
1 name = ‘hexin‘ 2 v = name.find(‘0‘) 3 i = name.find(‘x‘) 4 print(v) 5 print(i)
輸出:
-1 2
- 9)format,%s,format_map
功能:字符串格式化
formatformat_map
例子:
1 tpl1 = "我是:%s;年齡:%s;性別:%s" %( ‘hexin‘,18,‘man‘) 2 print(tpl1) 3 4 tpl2 = "我是:{0};年齡:{1};性別:{2}" 5 v2 = tpl2.format("李傑",19,‘都行‘) 6 print(v2) 7 8 tpl3 = "我是:{name};年齡:{age};性別:{gender}" 9 v3 = tpl3.format(name=‘李傑‘,age=19,gender=‘隨意‘) 10 print(v3) 11 12 tpl4 = "我是:{name};年齡:{age};性別:{gender}" 13 v4 = tpl4.format_map({‘name‘:"李傑",‘age‘:19,‘gender‘:‘中‘}) 14 print(v4)
輸出:
我是:hexin;年齡:18;性別:man 我是:李傑;年齡:19;性別:都行 我是:李傑;年齡:19;性別:隨意 我是:李傑;年齡:19;性別:中
- 10)isalnum
功能:是否是數字或漢字
isalnum例子:
1 name = ‘hexin0好‘ 2 v = name.isalnum() 3 print(v)
輸出:
True
- 11)isdecimal,isdigit,isnumeric
功能:是否是數字
isalnum isdecimal isdigit
例子:
1 num = ‘二‘ 2 v1 = num.isdecimal() # ‘123‘ 3 v2 = num.isdigit() # ‘123‘,‘②‘ 4 v3 = num.isnumeric() # ‘123‘,‘二‘,‘②‘ 5 print(v1,v2,v3)
輸出:
False False True
- 12)isidentifer
功能:是否是有效的標識符
isidentifier例子:
1 n = ‘1name‘ 2 u = ‘name‘ 3 v = n.isidentifier() 4 i = u.isidentifier() 5 print(v) 6 print(i)
輸出:
False True
- 13)islower(isupper)
功能:是否全部是小寫(大寫)
islower例子:
1 name = ‘hexin‘ 2 name1 = ‘Hexin‘ 3 v = name.islower() 4 i = name1.islower() 5 print(v) 6 print(i)
輸出:
True False
- 14)isprintable
功能:是否包含隱含的XX(包含\n,\t等不可見字符為False)
isprintable
例子:
1 name = ‘hexindas\talj,hexin‘ 2 v = name.isprintable() 3 print(v)
輸出:
False
- 15)join
功能:元素拼接
join例子:
1 name = ‘hexin‘ 2 3 v = "_".join(name) # 內部循環每個元素 4 print(v) 5 6 name_list = [‘1‘,‘2‘,‘3‘,‘4‘] 7 v = "+".join(name_list) 8 print(v)
輸出:
h_e_x_i_n 1+2+3+4
- 16)rjust,ljust
功能:左右填充,類似center
ljust例子:
1 name = ‘hexin‘ 2 v = name.ljust(14,‘*‘) 3 i = name.rjust(6,‘*‘) 4 print(v) 5 print(i)
輸出
hexin********* *hexin
- 17)maketrans,translate
功能:創建對應關系,翻譯轉換
maketrans例子:
1 m = str.maketrans(‘aeiou‘,‘12345‘) # 對應關系 2 name = "akpsojfasdufasdlkfj8ausdfakjsdfl;kjer09asdf" 3 v = name.translate(m) 4 print(v)
輸出:
1kps4jf1sd5f1sdlkfj815sdf1kjsdfl;kj2r091sdf
- 18)partition
功能:分割,保留分割的元素
partition例子:
1 content = "9SB6SB6" 2 v = content.partition(‘SB‘) # partition 3 print(v)
輸出:
(‘9‘, ‘SB‘, ‘6SB6‘)
- 19)replace
功能:替換
replace例子:
1 content = "1SB2SB3SB4" 2 v = content.replace(‘SB‘,‘Love‘) 3 print(v) 4 v = content.replace(‘SB‘,‘Love‘,1) 5 print(v)
輸出:
1Love2Love3Love4 1Love2SB3SB4
- 20)strip
功能:移除空白,\n,\t, 自定義
strip
例子:
1 name = ‘hexin \t‘ 2 v = name.strip() # 空白,\n,\t 3 print(v)
輸出:
hexin
- 21)zfill
功能:填充0
zfill例子:
1 name = ‘hexin‘ 2 v = name.zfill(20) 3 print(v)
輸出:
000000000000000hexin
2.整數
類int
- 1)bit_length
功能:當前整數的二進制表示的最少位數
bit_length例子:
age = 4 # 100 print(age.bit_length())
輸出:
3
- 2)to_bytes
功能:獲取當前數據的字節表示
to_bytes例子:
age = 15 v = age.to_bytes(10,byteorder=‘big‘) v = age.to_bytes(10,byteorder=‘little‘) print(v)
輸出:
b‘\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00‘
3.list列表
類list
可變類型
- 1)append
功能:追加
append例子:
user_list = [‘tom‘,‘劉‘,‘jack‘,‘n‘] # 可變類型 user_list.append(‘hex‘) print(user_list)
輸出
[‘tom‘, ‘劉‘, ‘jack‘, ‘n‘, ‘hex‘]
- 2)clear
功能:清空
例子:
user_list = [‘tom‘,‘劉‘,‘jack‘,‘n‘] # 可變類型 user_list.clear() print(user_list)
輸出:
[]
- 3)copy
功能:淺拷貝
例子:
user_list = [‘tom‘,‘劉‘,‘jack‘,‘n‘] t = user_list.copy() print(user_list) print(t)
輸出:
[‘tom‘, ‘劉‘, ‘jack‘, ‘n‘] [‘tom‘, ‘劉‘, ‘jack‘, ‘n‘]
- 4)count
功能:計數
例子:
user_list = [‘tom‘,‘n‘,‘劉‘,‘jack‘,‘n‘,‘n‘] t = user_list.count(‘n‘) print(user_list) print(t)
輸出:
[‘tom‘, ‘n‘, ‘劉‘, ‘jack‘, ‘n‘, ‘n‘] 3
- 5)extend
功能:擴展原列表
例子:
user_list = [‘tom‘,‘n‘,‘劉‘,‘jack‘,‘n‘,‘n‘] user_list.extend(‘9‘) print(user_list)
輸出:
[‘tom‘, ‘n‘, ‘劉‘, ‘jack‘, ‘n‘, ‘n‘, ‘9‘]
- 6)index
功能:查找元素索引,沒有報錯
例子:
user_list = [‘tom‘,‘n‘,‘劉‘,‘jack‘,‘n‘,‘n‘] v = user_list.index(‘n‘) print(v)
輸出:
1
- 7)pop
功能:刪除並獲取元素,索引
例子:
user_list = [‘tom‘,‘n‘,‘劉‘,‘jack‘,‘n‘,‘n‘] v = user_list.pop(1) print(v) print(user_list)
輸出:
n [‘tom‘, ‘劉‘, ‘jack‘, ‘n‘, ‘n‘]
- 8)remove
功能:刪除,值
例子:
user_list = [‘tom‘,‘n‘,‘劉‘,‘jack‘,‘n‘,‘n‘] user_list.remove(‘n‘) print(user_list)
輸出:
[‘tom‘, ‘劉‘, ‘jack‘, ‘n‘, ‘n‘]
- 9)reverse
功能:翻轉
例子:
user_list = [‘tom‘,‘n‘,‘劉‘,‘jack‘,‘n‘,‘n‘] user_list.reverse() print(user_list)
輸出:
[‘n‘, ‘n‘, ‘jack‘, ‘劉‘, ‘n‘, ‘tom‘]
- 10)sort
功能:排序
例子:
num = [11,2,3,6,111] num.sort() print(num) num.sort(reverse=True) print(num)
輸出:
[2, 3, 6, 11, 111] [111, 11, 6, 3, 2]
4.range
- 1)創建
py2.7:立即生成數字
range(1,11) # 生成 1,23,,4,56.10
py3:不會立即生成,只有循環叠代,才一個個生成;
for i in range(1,11): print(i) for j in range(1,11,2): print(j) for k in range(10,0,-1): print(k)
1 2 3 4 5 6 7 8 9 10 1 3 5 7 9 10 9 8 7 6 5 4 3 2 1
例子
# li = [‘eric‘,‘alex‘,‘tony‘]
# for i in range(0,len(li)):
# ele = li[i]
# print(ele)
li = [‘eric‘,‘alex‘,‘tony‘]
for i in li:
print(i)
# for i in range(0,len(li)):
# print(i+1,li[i])
輸出
eric alex tony
5.enumerate
功能:額外生成一列有序的數字
例子
li = [‘eric‘,‘alex‘,‘tony‘] for i,ele in enumerate(li,1): print(i,ele) #1 eric #2 alex #3 tony
li = [‘eric‘,‘alex‘,‘tony‘] for i,ele in enumerate(li,1): print(i,ele) v = input(‘請輸入商品序號:‘) v = int(v) item = li[v-1] print(item) #1 eric #2 alex #3 tony #請輸入商品序號:1 #eric
6.tuple元組
不可被修改類型,元組元素不可被修改,元祖是其他類型數據可以修改
- 1)創建
user_tuple = (‘hex‘,‘eric‘,‘seven‘,‘hex‘)
- 2)count
功能:獲取個數
user_tuple = (‘hex‘,‘eric‘,‘seven‘,‘hex‘) v = user_tuple.count(‘hex‘) print(v)
#2
- 3)index
功能:獲取值得第一個索引位置
user_tuple = (‘hex‘,‘eric‘,‘seven‘,‘hex‘) v = user_tuple.index(‘hex‘) print(v) #0
- 4)註意:元組最後加逗號
例子
li = (‘hx‘,) print(li)
- 5)本身不可修改,但是元組元素是其他類型可以修改
user_tuple = (‘alex‘,‘eric‘,‘seven‘,[‘1‘,‘2‘,‘3‘],‘a4‘)
# user_tuple[0] = 123 執行錯誤
# user_tuple[3] = [11,22,33] 執行錯誤
user_tuple[3][1] = ‘0‘
print(user_tuple)
7.dict
可變類型
- 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
功能:根據key獲取指定value,不存在不報錯
dic = {‘k1‘:‘v1‘,‘k2‘:‘v2‘} v = dic.get(‘k1111‘,1111) print(v)
- 4)pop
功能:刪除並獲取對應的value值
# dic = {‘k1‘:‘v1‘,‘k2‘:‘v2‘} # v = dic.pop(‘k1‘) # print(dic) # print(v)
輸出:
{‘k2‘: ‘v2‘} v1
- 5)popitem
功能:隨機刪除鍵值對,並獲取到刪除的鍵值
dic = {‘k1‘:‘v1‘,‘k2‘:‘v2‘} v = dic.popitem() print(dic) print(v)
輸出:
{‘k1‘: ‘v1‘} (‘k2‘, ‘v2‘)
dic = {‘k1‘:‘v1‘,‘k2‘:‘v2‘} k,v = dic.popitem() # (‘k2‘, ‘v2‘) print(dic) print(k,v)
輸出:
{‘k2‘: ‘v2‘} k1 v1
dic = {‘k1‘:‘v1‘,‘k2‘:‘v2‘} v = dic.popitem() # (‘k2‘, ‘v2‘) print(dic) print(v[0],v[1])
輸出:
{‘k1‘: ‘v1‘} k2 v2
- 6)setdefault
功能:增加,如果不存在即刪除
dic = {‘k1‘:‘v1‘,‘k2‘:‘v2‘} dic.setdefault(‘k3‘,‘v3‘) print(dic) dic.setdefault(‘k1‘,‘1111111‘) print(dic)
輸出:
{‘k2‘: ‘v2‘, ‘k1‘: ‘v1‘, ‘k3‘: ‘v3‘} {‘k2‘: ‘v2‘, ‘k1‘: ‘v1‘, ‘k3‘: ‘v3‘}
- 7)update
功能:批量增加或修改
dic = {‘k1‘:‘v1‘,‘k2‘:‘v2‘} dic.update({‘k3‘:‘v3‘,‘k1‘:‘v24‘}) print(dic)
輸出:
{‘k1‘: ‘v24‘, ‘k2‘: ‘v2‘, ‘k3‘: ‘v3‘}
- 8)fromkeys
功能:從序列鍵和值設置為value來創建一個新的字典。
例子:
dic = dict.fromkeys([‘k1‘,‘k2‘,‘k3‘],123) dic[‘k1‘] = ‘asdfjasldkf‘ print(dic)
輸出:
{‘k2‘: 123, ‘k1‘: ‘asdfjasldkf‘, ‘k3‘: 123}
8.set
集合,不可重復列表,可變類型。
- 1)創建
s1 = {"alex",‘eric‘,‘tony‘} print(type(s1)) print(s1)
輸出:
<class ‘set‘> {‘alex‘, ‘eric‘, ‘tony‘}
- 2)difference
功能:輸出s1中存在,s2中不存在的值
s1 = {"alex",‘eric‘,‘tony‘,‘ii‘} s2 = {"alex",‘eric‘,‘tony‘,‘hexin‘} v = s1.difference(s2) print(v)
輸出:
{‘ii‘}
- 3)difference_update
功能:s1中存在,s2中不存在,然後對s1清空,然後在重新賦值
s1 = {"alex",‘eric‘,‘tony‘,‘ii‘} s2 = {"alex",‘eric‘,‘tony‘,‘hexin‘} s1.difference_update(s2) print(s1)
輸出:
{‘ii‘}
- 4)symmetric_difference
功能:s1中存在,s2中不存在的值及s2中存在,s1中不存在的值
s1 = {"alex",‘eric‘,‘tony‘,‘ii‘} s2 = {"alex",‘eric‘,‘tony‘,‘hexin‘} v = s1.symmetric_difference(s2) print(v)
{‘ii‘, ‘hexin‘}
- 5)intersection
功能:交集
s1 = {"alex",‘eric‘,‘tony‘,‘ii‘} s2 = {"alex",‘eric‘,‘tony‘,‘hexin‘} v = s1.intersection(s2) print(v)
輸出:
{‘eric‘, ‘alex‘, ‘tony‘}
- 6)union
功能:並集
s1 = {"alex",‘eric‘,‘tony‘,‘ii‘} s2 = {"alex",‘eric‘,‘tony‘,‘hexin‘} v = s1.union(s2) print(v)
輸出:
{‘alex‘, ‘hexin‘, ‘eric‘, ‘ii‘, ‘tony‘}
- 7)discard
功能:移除
s1 = {"alex",‘eric‘,‘tony‘,‘ii‘} s2 = {"alex",‘eric‘,‘tony‘,‘hexin‘} s1.discard(‘alex‘) print(s1)
輸出:
{‘eric‘, ‘tony‘, ‘ii‘}
- 8)update
功能:添加
s1 = {"alex",‘eric‘,‘tony‘,‘李泉‘,‘李泉11‘} s1.update({‘alex‘,‘123123‘,‘fff‘}) print(s1)
輸出:
{‘fff‘, ‘李泉‘, ‘123123‘, ‘tony‘, ‘alex‘, ‘eric‘, ‘李泉11‘}
python_基礎類型