Python的基本數(shù)據(jù)類型

變量

變量代表內(nèi)存中的一個位置把兔,可以是數(shù)據(jù)沪伙、對象、方法等
Python中的變量沒有類型县好,不需要單獨(dú)聲明围橡,直接等號賦值即可,如a=100
變量名稱遵循標(biāo)識符規(guī)范
多個變量可以連續(xù)賦相同值缕贡,如a=b=c=100相當(dāng)于abc分別等于100
多個變量可以同時賦予不同值翁授,如a,b=100,'hello'相當(dāng)于a=100b='hello'

>>> a,b = 1,3
>>> a,b
(1, 3)
>>> a,b = b,b+1
>>> a,b
(3, 4)

查看數(shù)據(jù)類型

type()isinstance()方法查看數(shù)據(jù)類型拣播,區(qū)別是type是最底層子類,isinstance是父類收擦。

>>> a='hello'
>>> type(a)
<class 'str'>
>>> type(a)==str
True
>>> isinstance(a,str)
True
>>> a=True #布爾值是int的子類
>>> type(a)
<class 'bool'>
>>> isinstance(a,int)
True
>>> isinstance(a,float)
False

刪除數(shù)據(jù)

del命令可以刪除變量贮配,實(shí)際上只是刪除引用,內(nèi)存中的數(shù)據(jù)會被自動回收

>>> c=100
>>> c
100
>>> del c
>>> c
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'c' is not defined

標(biāo)準(zhǔn)數(shù)據(jù)類型

Number(數(shù)字)
String(字符串)
List(列表)
Tuple(元組)
Set(集合)
Dictionary(字典)
其中Number和String是基本數(shù)據(jù)類型塞赂,List泪勒、Tuple、Set宴猾、Dictionary是容器類型

Number數(shù)字

Python3 數(shù)字支持 int整數(shù)(包含bool布爾)酣藻、float浮點(diǎn)數(shù)(小數(shù))、complex復(fù)數(shù)
bool只有True和Flase兩個值鳍置,相當(dāng)于1和0
復(fù)數(shù)由real實(shí)部和imag虛部兩個浮點(diǎn)數(shù)組成辽剧,100+2.1j格式,如果只有虛部税产,則實(shí)部為0怕轿,如c=200j,J不分大小寫
系統(tǒng)中float小數(shù)的精度可以使用sys.float_info查看;
Python3支持不同類型數(shù)字之間的直接計(jì)算辟拷,其中會把范圍較窄的轉(zhuǎn)換為較寬的類型撞羽,寬窄依次是complex>float>int

>>> a=True
>>> b=30
>>> a+b
31
>>> a=10
>>> b=0.2
>>> a+b
10.2

數(shù)字之間可以相互轉(zhuǎn)換,int(),float(),complex()方法衫冻,注意復(fù)數(shù)必須分開real或imag部分單獨(dú)轉(zhuǎn)換

>>> int(10.2)
10
>>> c=100+20j
>>> int(c)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't convert complex to int
>>> float(c.real)
100.0

int('x', base=10),base可以使用二進(jìn)制0b诀紊、八進(jìn)制0o、十六進(jìn)制0x表示

>>> a=int('011',8)
>>> a
9
>>> a=0b11
>>> a
3
>>> a=0o11
>>> a
9
>>> a=0x11
>>> a
17

Python 2整數(shù)范圍可以用sys.maxsize查看隅俘,但實(shí)際上python3允許使用任意大小的整數(shù)邻奠。

>>> 10**100
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

float('inf')表示無限大的浮點(diǎn)數(shù),float('-inf')表示無限小
浮點(diǎn)小數(shù)按精度截取使用round(10/3,3)截取三位3.333;math.ceil較大整數(shù)为居,floor取較小整數(shù)碌宴。

>>> import math
>>> math.ceil(10/3)
4
>>> math.floor(10/3)
3

String字符串

使用單引號、雙引號或者三個引號包裹的文本內(nèi)容

'allows embedded "double" quotes'
"allows embedded 'single' quotes"
'''Three single quotes'''
"""Three double quotes"""

特殊字符可以用反斜杠轉(zhuǎn)義,如\n表示回車蒙畴,'表示單引號贰镣,"表示雙引號,需要print輸出時候會被轉(zhuǎn)義

>>> s='A\nB\'C\"d'
>>> print(s)
A
B'C"d

三個引號支持多行文本,也可用于注釋內(nèi)容

>>> '''
... AAA
... BBB
... '''
'\nAAA\nBBB\n'

如果需要把長內(nèi)容換行輸入膳凝,可以使用()方法如下:

>>> s=('ab' 'c')
>>> s
'abc'
>>> s=('a'
... 'bc')
>>> s
'abc'

Python沒有表示單個字符的類型碑隆,字符串可以索引獲得單個字符,但不能通過索引進(jìn)行修改

>>> s='abcde'
>>> s[0],s[:2],s[2:],s[1:3]
('a', 'ab', 'cde', 'bc')
>>> s[2]='x'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

Python3字符串默認(rèn)uft-8編碼str(object=b'', encoding='utf-8', errors='strict')
以b開頭的字符串返回一個字節(jié)byte類型,以r開頭的字符串禁止轉(zhuǎn)義(多用于正則表達(dá)式)蹬音,以u開頭的字符串與默認(rèn)utf8編碼一致上煤,u可省略

>>> b=b'abc'
>>> b
b'abc'
>>> s=r'A\nB'
>>> print(s)
A\nB

以f開頭的字符串表示字符串中{}內(nèi)用相應(yīng)的變量替換,和format方法作用很像

>>> weight=100
>>> s=f'wei:{weight}'
>>> s
'wei:100'
>>> s='weight:{w}'.format(w=weight)
>>> s
'weight:100'
>>> height=90
>>> s='wei:{1},hei:{0}'.format(height,weight)
>>> s
'wei:100,hei:90'
>>> s='ratial:{:}'.format(10/3)
>>> s
'ratial:3.3333333333333335'
>>> s='ratial:{:.5}'.format(100/3) #保留共5位數(shù)字
>>> s
'ratial:33.333'

更多format示例:

>>> name = "Fred"
>>> f"He said his name is {name!r}."
"He said his name is 'Fred'."
>>> f"He said his name is {repr(name)}."  # repr() 等同 !r
"He said his name is 'Fred'."
>>> width = 10
>>> precision = 4
>>> value = decimal.Decimal("12.34567")
>>> f"result: {value:{width}.{precision}}"  # 嵌套
'result:      12.35'
>>> today = datetime(year=2017, month=1, day=27)
>>> f"{today:%B %d, %Y}"  # 使用date數(shù)據(jù)格式化標(biāo)準(zhǔn)
'January 27, 2017'
>>> number = 1024
>>> f"{number:#0x}"  # 指定16進(jìn)制
'0x400'

在print方法中,可以結(jié)合%進(jìn)行變量替換

>>> a='ABC'
>>> print('a is %s' % a) #這里的%s的s是string祟绊,表示是個字符串變量,如果是數(shù)字則%d
a is ABC

str.join(iterable)可用于連接可枚舉對象如list

>>> li=['a','b','c']
>>> '-'.join(li)
'a-b-c'

lstrip()移除左側(cè)空白字符,rstrip()移除右側(cè)空白字符,strip()兩端同時移除

>>> s='\n    ABC'.lstrip()
>>> s
'ABC'

str.lower()全部轉(zhuǎn)小寫,str.upper()轉(zhuǎn)大寫
str.replace(old, new[, count])替換字符楼入,count表示替換總數(shù)哥捕。可以用來刪除某些字符嘉熊。

>>> s='abc123'
>>> s.replace('bc','BC')
'aBC123'
>>> s.replace('12','')
'abc3'

如果要特殊替換的話需要使用正則表達(dá)式遥赚,例如替換非數(shù)字內(nèi)容:

>>> p=re.compile('[^0-9]{1}')
>>> re.sub(p,'-',s)
'---123'

index和find用來查找字符串中特定字符,找到則返回位置阐肤,否則index報錯而find返回-1;in可以直接判斷是否存在

>>> s='abc123'
>>> s.find('2')
4
>>> s.rfind('2')
4
>>> s.index('2')
4
>>> '2' in s
True

tr.split(sep=None, maxsplit=-1)用于將字符串切割成列表凫佛,例如:

>>> '1,2,3'.split(',')
['1', '2', '3']
>>> '1,2,3'.split(',', maxsplit=1)
['1', '2,3']
>>> '1,2,,3,'.split(',')
['1', '2', '', '3', '']

str.zfill()為數(shù)字填充空位0

>>> "42".zfill(5)
'00042'
>>> "-42".zfill(5)
'-0042'

加法符號可以把字符串相加,乘法符號*用來表示重復(fù)字符的個數(shù)

>>> s='A'*5
>>> s
'AAAAA'

bytes字節(jié)

字節(jié)是二進(jìn)制的數(shù)據(jù)孕惜,可以用bytes方法生成愧薛,也可以用b加字符串格式

>>> b=b'hello'
>>> b
b'hello'
>>> b=bytes('hello','ascii')
>>> b
b'hello'

由于字符串默認(rèn)用ascii編碼模式,所以并不支持中文。使用'utf8'或'gbk'編碼可支持中文

>>> b=b'你好'
  File "<stdin>", line 1
SyntaxError: bytes can only contain ASCII literal characters.
>>> b=bytes('你好','ascii')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
>>> b=bytes('你好','utf8')
>>> b
b'\xe4\xbd\xa0\xe5\xa5\xbd'

字節(jié)和字符串轉(zhuǎn)換用encode和decode衫画,但要注意編碼和解碼格式要一致

>>> s='你好'
>>> s.encode()
b'\xe4\xbd\xa0\xe5\xa5\xbd'
>>> s.encode(encoding='utf8')
b'\xe4\xbd\xa0\xe5\xa5\xbd'
>>> s.encode(encoding='ascii')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

None

空值毫炉,它不是任何值

>>> a=None
>>> a==False
False

Python沒有undefined類型,對于不確定情況只能try...except嘗試

del k
try:
    k
except NameError:
    print('set to None')
    k=None
print(k)

輸出

set to None
None
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末削罩,一起剝皮案震驚了整個濱河市瞄勾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌弥激,老刑警劉巖进陡,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異微服,居然都是意外死亡趾疚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進(jìn)店門以蕴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來糙麦,“玉大人,你說我怎么就攤上這事舒裤≡剩” “怎么了?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵腾供,是天一觀的道長。 經(jīng)常有香客問我鲜滩,道長伴鳖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任徙硅,我火速辦了婚禮榜聂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘嗓蘑。我一直安慰自己须肆,他們只是感情好匿乃,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著豌汇,像睡著了一般幢炸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拒贱,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天宛徊,我揣著相機(jī)與錄音,去河邊找鬼逻澳。 笑死闸天,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的斜做。 我是一名探鬼主播苞氮,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼瓤逼!你這毒婦竟也來了葱淳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤抛姑,失蹤者是張志新(化名)和其女友劉穎赞厕,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體定硝,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡皿桑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蔬啡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诲侮。...
    茶點(diǎn)故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖箱蟆,靈堂內(nèi)的尸體忽然破棺而出沟绪,到底是詐尸還是另有隱情,我是刑警寧澤空猜,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布绽慈,位于F島的核電站,受9級特大地震影響辈毯,放射性物質(zhì)發(fā)生泄漏坝疼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一谆沃、第九天 我趴在偏房一處隱蔽的房頂上張望钝凶。 院中可真熱鬧,春花似錦唁影、人聲如沸耕陷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哟沫。三九已至饺蔑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間南用,已是汗流浹背膀钠。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留裹虫,地道東北人肿嘲。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像筑公,于是被迫代替她去往敵國和親雳窟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內(nèi)容