Chapter 2 Python物件運算

一般運算(operation)與method的不同處在於:

  • method是直接作用在物件上,而operation不是;

  • operation: 針對一個情境去呈現結果,如: 2+3, 或2>3, 或(a<b and b<c)。

  • method: 直接作用在一個物件上可使用的方法,寫法為物件.method(…),如:
  • 只有method有可能「直接改變」物件內容。

2.1 Operations

2.1.1 數值

數學運算

關係邏輯

上述的運算只能針對一維數值物件,不能用在List上,即使List內元素皆為數值。

使用list comprehension:
* 計算numList每個值+3
* 判斷numList每個值是否>10

對數值向量運算會需要使用到NumPy模組,稍後章節會介紹。

2.1.2 字串

「佔」有幾個字(元)的位置:

2.1.2.1 concatenate

2.1.2.2 repeat

2.1.2.3 substring

由於Python將string class的每個字元當成它的每個元素,所以可輕易用元素粹取概念拿出其中的subset

2.1.4 relational operator

is/is not: 是否相同「物件」(含記憶體位置) ==: 是否相同「值」

另一個比較兩物件相同的操作是is/is not(不常用): 是否相同「物件」(含記憶體位置)

in:屬於

集合交(|/&)聯集

2.1.5 logical operator

and: 皆為真。 (如:x < 5 and x < 10or: 其中之一為真。(如:x < 5 or x < 10not: 將真改偽,偽改真。(如:not(x < 5 and x < 10)

有些程式語言的and, or, not是使用&, |, ~,在Python它們有不同的意思(很少會用到,請盡量避免)。

  • 判斷第一個元素是否>3
  • 判斷第二個元素是否>3
  • 使用list comprehension產生一個個別元素是否>3的list
  • 使用list comprehension產生一個listG個別元素是否>listF個別元素的list

2.1.5.1 class change

以下是常見函數,非operators

要小心class change並不會將向量物件的每個元素個別做class change

請將listC裡的每個元素轉成字串。

Generator comprehension: (<expression> for <var> in <iterable>) 中的<iterable>指得是可被一一取出元素的物件。

如以下字串,dict,list:

若我們想建立一個代表物件裡元素index的iterable,可以使用range(start_from,end_before,difference)

產生判斷以下list各元素是否為list class的True/False list:

2.2 Method

2.2.1 字串

常見methods

注意與list methods不太相同的是,這些string methods並不會更動原始物件內容——因為atomic types, such as string, float, etc, are immutable。

合併字串

string.join(): 用string來合併字串

使用append method比+在記憶體管理會更有效率:

字元/空白移除

Strip of whitespace:

string.strip(): 移除兩側空白
string.lstrip(): 移除左側空白
string.rstrip(): 移除右側空白

其他更動

若要更動方式不在string methods,可用以下策略:

  • 改成list of character使用list()。

  • 更動完再用" ".join()。

2.2.2 list

新增一筆

新增「一筆」元素

operation只有用=回存時才會改變物件值:

append method可否一次加兩個元素?

使用append method新增經濟學成績使其內容如下。

[‘小明’, [‘微積分’, 70], [‘會計學’, 81], [‘經濟學’, 77]]

刪除

對任何物件,一般使用del:
* 若物件mutable, 可刪內容元素
* 若物件immutable, 只可刪除整個物件

使用string-list轉換方式將y[1:3]刪除。

移除符合條件值元素

移除符合條件值的「第一個」元素

2.2.3 Tuple

tuple為immutable,

一個元素的tuple要放一個逗號,否則會視為atomic type。

2.3 dictionary

2.3.1 增加元素

dictionary可以直接增加不存在的index

注意list要增加元素只能使用append, insert或extend methods.

2.3.2 檢視keys

dictionaryA.keys() 是不是iterable?

2.3.3 檢視values: values

將dictionaryA的三個values分別存在三個list物件裡(分別叫objDate, objRevenue, objQuantity)

2.3.4 檢視成對(key, value): items

將key:value一對對以tuple形式顯示

2.3.5 檢查某key值存不存在: in (operation)

2.3.6 取出key下的value: get

取出符合key值的value

<!- –>