Python入門-對(duì)象類型

?

Python語(yǔ)言中姿搜,數(shù)據(jù)以對(duì)象的形式出現(xiàn)寡润,無論是Python提供的內(nèi)置對(duì)象,還是使用Python語(yǔ)言創(chuàng)建的對(duì)象舅柜。

程序-〉模塊-〉語(yǔ)句-〉表達(dá)式-〉處理對(duì)象

為何區(qū)分對(duì)象類型

1 不同類型對(duì)象運(yùn)算規(guī)則不同

2 不同類型對(duì)象在計(jì)算機(jī)內(nèi)表示方式不同

3 為何區(qū)分整數(shù)與浮點(diǎn)數(shù)

?浮點(diǎn)數(shù)表達(dá)能力更強(qiáng)

?浮點(diǎn)數(shù)有精度損失

?CPU有專門的浮點(diǎn)運(yùn)算部件


>>> print(3.3==1.1*3)

False


內(nèi)置對(duì)象一覽

對(duì)象類型例子

數(shù)字123梭纹,12.5,5+10j

字符串'hello world!'致份,"Python is best."

元組(5,'spam',12,'A')

列表[1,2,[3,4,'haha'],5]

字典{'abc':123,'efg':456,'qwer':'1234'}

集合{1,2,3,4,5} 变抽,set('hello world!')

文件myfile = open('test.py','r')

其他None,布爾型


數(shù)字

int(整型)

  在32位機(jī)器上知举,整數(shù)的位數(shù)為32位瞬沦,取值范圍為-2**31~2**31-1,即-2147483648~2147483647

  在64位系統(tǒng)上雇锡,整數(shù)的位數(shù)為64位逛钻,取值范圍為-2**63~2**63-1,即-9223372036854775808~9223372036854775807


long(長(zhǎng)整型)

  跟C語(yǔ)言不同锰提,Python的長(zhǎng)整數(shù)沒有指定位寬曙痘,即:Python沒有限制長(zhǎng)整數(shù)數(shù)值的大小,但實(shí)際上由于機(jī)器內(nèi)存有限立肘,我們使用的長(zhǎng)整數(shù)數(shù)值不可能無限大边坤。

  注意,自從Python2.2起谅年,如果整數(shù)發(fā)生溢出茧痒,Python會(huì)自動(dòng)將整數(shù)數(shù)據(jù)轉(zhuǎn)換為長(zhǎng)整數(shù),所以如今在長(zhǎng)整數(shù)數(shù)據(jù)后面不加字母L也不會(huì)導(dǎo)致嚴(yán)重后果了融蹂。


float(浮點(diǎn)型)

  浮點(diǎn)數(shù)用來處理實(shí)數(shù)旺订,即帶有小數(shù)的數(shù)字弄企。類似于C語(yǔ)言中的double類型,占8個(gè)字節(jié)(64位)区拳,其中52位表示底拘领,11位表示指數(shù),剩下的一位表示符號(hào)樱调。


complex(復(fù)數(shù))

  復(fù)數(shù)由實(shí)數(shù)部分和虛數(shù)部分組成约素,一般形式為x+yj,其中的x是復(fù)數(shù)的實(shí)數(shù)部分笆凌,y是復(fù)數(shù)的虛數(shù)部分圣猎,這里的x和y都是實(shí)數(shù)。


字符串

字符串(String)是一個(gè)字符的序列菩颖,用于記錄文本信息样漆。序列中的元素包含一個(gè)從左到右的順序,可以根據(jù)它們的相對(duì)位置進(jìn)行存儲(chǔ)和讀取晦闰,其他類型的序列包括列表和元組放祟。

注:不可變序列只能通過位置讀取,不能存儲(chǔ)(字符串和元組是不可變序列)呻右。

三種定義方式:

單引號(hào)括起來

s = 'hello world'

雙引號(hào)括起來

s = "hello world"

三引號(hào)括起來("""或''')

s = """this is a test

hello world."""


用轉(zhuǎn)義序列代表特殊字符

\\?--反斜線(保留\)

\'?--單引號(hào)

\"?--雙引號(hào)

\n? --換行

\t? --水平制表符

\v?--垂直制表符

\r?--回車

抑制轉(zhuǎn)義

>>>s = r'D:\tmp\a.txt'

>>>s

'D:\\tmp\\a.txt'


基本運(yùn)算

長(zhǎng)度(len()函數(shù))

拼接(+)

重復(fù)(*)

成員運(yùn)算符(in)


示例:

計(jì)算字符串中元音字母數(shù)目

def vowels_count(s):

???????? ret= 0

???????? foritem in s:

?????????????????? ifitem in 'aeiouAEIOU':

??????????????????????????? ret+=1

???????? returnret


索引與分片

Python語(yǔ)言中索引是按照最前面的偏移量進(jìn)行編碼跪妥,索引的起始位置為0。

例如:

>>>s = 'Hello'

>>>s[0]

'H'

>>>s[2]

'l'

Python語(yǔ)言支持反向索引声滥,從最后一個(gè)開始眉撵,其索引值是-1

>>>s[-1]

'o'

>>>s[-2]

'l'


分片操作,從序列對(duì)象中提取一部分落塑。一般形式為X[I,J]纽疟,表示從序列對(duì)象X中提取從偏移為I,直到但不包括J的內(nèi)容。

例如:

>>>s[1:3]

'el'

>>>s[1:-1]

ell


分片操作中憾赁,左邊界默認(rèn)為0污朽,右邊界默認(rèn)為序列長(zhǎng)度,這樣可以在分片時(shí)省略左右邊界龙考。

例如:

>>>s[:-1]

'Hell'

>>>s[2:]

'llo'

>>>s[:]

'Hello'


擴(kuò)展分片蟆肆,可選的第三個(gè)索引,用于步進(jìn)晦款。形式X[I,J,K]炎功,表示對(duì)序列X從偏移I,直到偏移J-1缓溅,每隔K個(gè)元素提取一個(gè)對(duì)象蛇损。K默認(rèn)值為1。

例如:

>>>s='abcdefghijklmnopqrstuvwxyz'

>>>s[1:10:3]

'beh'

>>>s[::4]

'aeimquy'

>>>s[::-1]

'zyxwvutsrqponmlkjihgfedcba'

>>>s[5:1:-2]

'fd'


字符串方法

replace(old,new,count=-1) 替換子串

find(sub) 尋找子串,找到返回子串位置淤齐,否則返回-1

split(sep) 字符串切分束世,根據(jù)sep切分為字符串?dāng)?shù)組


更多方法:

>>> dir(str)

['__add__', '__class__', '__contains__',

'__delattr__', '__dir__', '__doc__', '__eq__',

'__format__', '__ge__', '__getattribute__',

'__getitem__', '__getnewargs__', '__gt__',

'__hash__', '__init__',

'__init_subclass__', '__iter__', '__le__', '__len__', '__lt__',

'__mod__', '__mul__', '__ne__', '__new__',

'__reduce__','__reduce_ex__',

'__repr__', '__rmod__', '__rmul__',

'__setattr__', '__sizeof__', '__str__',

'__subclasshook__', 'capitalize',

'casefold', 'center', 'count', 'encode', 'endswith',

'expandtabs', 'find', 'format',

'format_map', 'index', 'isalnum', 'isalpha',

'isascii', 'isdecimal', 'isdigit',

'isidentifier', 'islower', 'isnumeric', 'isprintable',

'isspace', 'istitle', 'isupper', 'join',

'ljust', 'lower', 'lstrip', 'maketrans', 'partition',

'replace', 'rfind', 'rindex', 'rjust',

'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines',

'startswith', 'strip', 'swapcase', 'title',

'translate', 'upper', 'zfill']


字符串比較

?按順序依次比較每個(gè)位置上的字符,如果相同就比較下一個(gè)床玻,如果不同大小關(guān)系就由這兩個(gè)字符的大小關(guān)系決定。


字符串格式化format方法

{}的格式 {field name,align

width.precision type}

print("PI is {}".format(math.pi))

print("PI is

{:4.2f}".format(math.pi))


列表與元組

內(nèi)建數(shù)據(jù)結(jié)構(gòu)沉帮,用來存儲(chǔ)一系列元素锈死,列表與元組的區(qū)別是,元組是不可變對(duì)象穆壕,不能修改待牵,列表可以修改。

元組:

t = (1,2,3,4,5)

列表

l = [1,2,3,4,5]


列表和元組與字符串一樣喇勋,都是有序序列缨该,所以列表和元組與字符串有很多相同點(diǎn):

1 索引運(yùn)算[]

2 切片[:]

3 拼接和重復(fù) + *

4 成員運(yùn)算 in

5 長(zhǎng)度 len

6 循環(huán)迭代 for


與字符串只能包含字符不同,列表和元組可以包含多種類型的對(duì)象川背。

列表的方法

append() #追加

extend() #擴(kuò)充

pop() #刪除

remove() #刪除

sort() #排序

reverse() #逆序



列表賦值

a = [1,2,3,4]

b = a

b[1] = 100


b = [:]

b[1] = 100


嵌套列表

x = [[1,2,3,[4,5,6],[7,8,9]]]

len(x) = ?

len(x[1]) = ?


列表解析

列表解析:由原列表創(chuàng)建新列表的簡(jiǎn)單方法贰拿。列表解析語(yǔ)法是從集合理論表示法中的一種結(jié)構(gòu)衍生出來的,也就是對(duì)集合中的每個(gè)元素應(yīng)用某一種運(yùn)算熄云。

?[表達(dá)式 for 變量 in 列表 if 條件]


例如生成x平方的序列:

?ist= []

?forx in range(1,10)

???????? ist.append(x**2)

?print(ist)


列表解析:

?ist= [x**2 for x in range(1,10)]


使用列表解析求輸入數(shù)字x的因數(shù)和

?例如輸入6 膨更,因數(shù)和為1+2+3+6 = 12

?sum([i for i in range(1,x+1) if x%i == 0])



字典與集合

字典:一系列“鍵-值(key-value)”對(duì)

通過“鍵”查找對(duì)應(yīng)的“值”

?電話本,字典

?java中的Map

(HashTable,HashMap)


創(chuàng)建字典

?使用{}創(chuàng)建字典

?使用:指明鍵:值對(duì)

?myDict = {'小李':87977111,'李明':13598881112,'小丁':98761221}

?字典中的鍵必須是不可變的且不可重復(fù)缴允,值可以是任意類型荚守。


訪問字典

?使用[]運(yùn)算符,鍵作為索引

?print(myDict['小李'])

?增加新的鍵值對(duì):

?myDict['小王']=17621231232


字典運(yùn)算符和方法

?len

?keyin myDict

?forkey in myDict


myDict.items() #全部鍵值對(duì)

myDict.keys() #全部鍵

myDict.values() #全部值

myDict.clean() #清空字典


示例:

計(jì)算一個(gè)字符串中每個(gè)字母出現(xiàn)的次數(shù)


count = {}

for i in 'hello world':

???????? ifi in count:

?????????????????? count[i]+= 1

???????? else:

?????????????????? count[i]= 1


集合(Set)

無序不重復(fù)元素集

和字典類似练般,但是只有“鍵”沒有“值”


創(chuàng)建

?x =set()

?x ={key1,key2,...}


添加和刪除

?x.add()

?x.remove()


集合的運(yùn)算符

-? 差集

& 交集

| 并集

!= 不等于

== 等于

in 成員

for key in set 枚舉


文件

計(jì)算機(jī)中由操作系統(tǒng)管理的具有名字的存儲(chǔ)數(shù)據(jù)的基本單元矗漾。

內(nèi)置open函數(shù)

open(file, mode='r', encoding=None)

file -- 文件名

mode --模式 r讀; w寫薄料; a追加敞贡; b 二進(jìn)制模式;t文本模式都办;+ 同時(shí)讀寫

encoding --編碼(只對(duì)文本模式有效嫡锌,默認(rèn)取系統(tǒng)編碼,可參考codesc模塊)


文件對(duì)象的方法:

file.read()?????????????????? ?????????????????? --把整個(gè)文件讀入單一字符串

file.read(N)?????? ?????????????????? --讀取N個(gè)字節(jié)到一個(gè)字符串

file.readline()????????????????????? --讀取下一行(包括換行符)

file.readlines()??????????????????? --讀取整個(gè)文件到字符串列表(可迭代對(duì)象)

file.write(aString)????????????? --寫入字符串到文件

file.writelines(aList)?????????????????? --把列表內(nèi)所有字符串寫入文件

file.close()?????????????????????????? --關(guān)閉文件

file.flush()??????????????????????????? --輸出緩沖區(qū)刷新到硬盤

file.seek(N)???????????????????????? --文件指針向后跳轉(zhuǎn)到偏移量N處


注:目前的Python解釋器在回收文件對(duì)象時(shí)琳钉,會(huì)自動(dòng)關(guān)閉文件势木,這意味著并不需要總是手動(dòng)關(guān)閉文件,但這并不是語(yǔ)言定義的一部分歌懒,所以手動(dòng)調(diào)用close方法關(guān)閉文件是個(gè)好習(xí)慣啦桌。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子甫男,更是在濱河造成了極大的恐慌且改,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件板驳,死亡現(xiàn)場(chǎng)離奇詭異又跛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)若治,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門慨蓝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人端幼,你說我怎么就攤上這事礼烈。” “怎么了婆跑?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵蜜托,是天一觀的道長(zhǎng)撇寞。 經(jīng)常有香客問我懈贺,道長(zhǎng)钞它,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任扶关,我火速辦了婚禮峡碉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘驮审。我一直安慰自己鲫寄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布疯淫。 她就那樣靜靜地躺著地来,像睡著了一般。 火紅的嫁衣襯著肌膚如雪熙掺。 梳的紋絲不亂的頭發(fā)上未斑,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音币绩,去河邊找鬼蜡秽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛缆镣,可吹牛的內(nèi)容都是我干的芽突。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼董瞻,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼寞蚌!你這毒婦竟也來了田巴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤挟秤,失蹤者是張志新(化名)和其女友劉穎壹哺,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體艘刚,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡管宵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了攀甚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片啄糙。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖云稚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情沈堡,我是刑警寧澤静陈,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站诞丽,受9級(jí)特大地震影響鲸拥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜僧免,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一刑赶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧懂衩,春花似錦撞叨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至法希,卻和暖如春枷餐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背苫亦。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工毛肋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人屋剑。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓润匙,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親唉匾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子趁桃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

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

  • Python標(biāo)識(shí)符 在 Python 里,標(biāo)識(shí)符有字母、數(shù)字卫病、下劃線組成油啤。在 Python 中,所有標(biāo)識(shí)符可以包括...
    tianyi6677閱讀 1,097評(píng)論 0 3
  • http://python.jobbole.com/85231/ 關(guān)于專業(yè)技能寫完項(xiàng)目接著寫寫一名3年工作經(jīng)驗(yàn)的J...
    燕京博士閱讀 7,579評(píng)論 1 118
  • 寫在前面的話 代碼中的# > 表示的是輸出結(jié)果 輸入 使用input()函數(shù) 用法 注意input函數(shù)輸出的均是字...
    FlyingLittlePG閱讀 2,764評(píng)論 0 8
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,383評(píng)論 0 5
  • 每個(gè)人生活中都有一些看似邁不過去的坎這時(shí)候我們會(huì)悲傷我們會(huì)心急,我們能做的就是在這些憂郁的日子里承受這些苦難并不斷...
    瓦里克斯123閱讀 241評(píng)論 0 0