速擼《python學習手冊》--第4章-介紹python對象類型

python的組成全景:

  • 程序由模塊構(gòu)成
  • 模塊包含語句
  • 語句包含表達式
  • 表達式建立并處理對象

python的內(nèi)置對象:

  • 數(shù)字
  • 字符串
  • 列表
  • 字典
  • 元組
  • 文件
  • 集合
  • 其他類型: 類型、None、布爾型
  • 編程單元類型: 函數(shù)、類、模塊
  • 與實現(xiàn)相關(guān)的類型: 編譯的代碼堆棧跟蹤

數(shù)字

數(shù)字包含:整數(shù)、浮點數(shù)、復數(shù)、十進制數(shù)、帶分子和分母的有理分數(shù)以及集合

注意:python的整數(shù)類型會自動提供額外的精度

python的命令行交互方法調(diào)用的是repr,而print調(diào)用的str

字符串

字符串就是序列中的元素包含了一個從左到右的順序—序列中的元素根據(jù)它們的相對位置進行儲存和讀取。從嚴格意思上來說,字符串是單個字符的字符串的序列,其他類型的序列還包括列表和元組。

序列的操作

  • len()
  • 切片
  • S[-1] 和 S[len(s)-1] 結(jié)果相等
  • S[:] 可以作為復制

不可變性

類型特定的方法

  • .find()

  • .replace()

  • .split()

  • .upper()

  • .isalpha()

  • .isupper()

  • .strip()

尋求幫助

  • dir(s) :顯示可以調(diào)用的方法
  • help(s.replace) :顯示幫助信息

列表

列表是一個任意類型的對象的位置相關(guān)的有序集合。其大小可變。

序列操作

L 是一個list

  • len()

  • L+L[:2]

類型特定的操作

  • l.append()
  • l.pop()
  • l.sort()
  • l.reverse()

邊界檢查

python不允許引用和賦值列表不存在的元素。

嵌套

列表可以嵌套,這樣即形成了多重列表。

列表解析

  • [row[1] for row in M if row[1] % 2 == 0]

列表解析的速度有優(yōu)勢

注意,將列表表達式的中括號換成括號,列表表達式將會變成一個生成器。

In [8]: M=[1,2,3,4,5,6,7,8,9]

In [11]: G=(row*2 for row in M)

In [12]: next(G)

解析語法同樣可以創(chuàng)建集合和字典

In [22]: M=[[1,2,3],[4,5,6],[7,8,9]]

In [23]: {sum(row) for row in M}
Out[23]: {6, 15, 24}

In [24]: {i: sum(M[i]) for i in range(3)}
Out[24]: {0: 6, 1: 15, 2: 24}

字典

字典就是一種映射,他并不是基于位置映射,而是基于key來映射

映射操作

即可以通過key來獲得字典的value

重訪嵌套

即字典可以值內(nèi)嵌套字典

鍵的排序:for循環(huán)

d 是一個字典

  • d.keys()
  • for key in s : 循環(huán)的是key
  • d.items()
  • d.values()

迭代和優(yōu)化

列表表達式就是一個迭代工具。

不存在的鍵: if 測試

In [42]: 'f' in d
Out[42]: False

In [43]: if not 'f' in d:print('not in')
not in

In [46]: d['x'] if 'x' in d else 0
Out[46]: 0

In [47]: d.get('x',0)
Out[47]: 0

元組

元組是一個不可變的列表,他提供了完整的約束。

  • .index()
  • .count()

文件

文件對象是python代碼對電腦上外部文件的主要接口。

沒有特定的常量語法創(chuàng)建文件,如果需要創(chuàng)建一個文件對象,需調(diào)用內(nèi)置的open函數(shù)以字符串的形式傳遞給他它一個外部的文件名以及一個處理模式的字符串。

其他核心類型

# 例如集合
In [48]: X=set('spam')

In [49]: Y={'h','a','m'}

In [50]: X,Y
Out[50]: ({'a', 'm', 'p', 's'}, {'a', 'h', 'm'})

In [51]: X&Y
Out[51]: {'a', 'm'}

In [52]: X|Y
Out[52]: {'a', 'h', 'm', 'p', 's'}

In [53]: X-Y
Out[53]: {'p', 's'}
    
  
# 固定精度浮點數(shù)
In [54]: 1/3
Out[54]: 0.3333333333333333

In [55]: (2/3)+(1/2)
Out[55]: 1.1666666666666665

In [56]: import decimal

In [57]: d=decimal.Decimal('3.141')

In [58]: d+1
Out[58]: Decimal('4.141')

In [59]: decimal.getcontext().prec=2

In [60]: decimal.Decimal('1.00') / decimal.Decimal('3.00')
Out[60]: Decimal('0.33')

如何破壞代碼的靈活性

用戶定義的類

習題

  1. 什么是不可變?

即創(chuàng)建之后就不可以被改變,數(shù)字、字符串和元組都屬于這個分類。

  1. 什么是’序列‘?

即對位置排序的對象和集合。字符串、列表和元組都在這個分類,他們有共同的操作是索引、合并和切片。

  1. 什么是’映射‘?

即將鍵和相關(guān)值相互關(guān)聯(lián)映射的對象。字典屬于此類。

  1. 什么是多態(tài)?

多態(tài)意味著一個操作符的意義區(qū)別于被操作的對象。python的關(guān)鍵思想就是多態(tài),不要把代碼限制在特定的類型上,使代碼自動適用于多種類型。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容