天天看點

Python基礎筆記2

1.清單

Python内置的一種資料類型是清單:list。list是一種有序的集合,可以随時添加和删除其中的元素。

變量<code>classmates</code>就是一個list。用<code>len()</code>函數可以獲得list元素的個數:

對于可變對象,比如list,對list進行操作,list内部的内容是會變化的,比如:

2.

用索引來通路list中每一個位置的元素,記得索引是從<code>0</code>開始的:

3.

可以往list中追加元素到末尾:

也可以把元素插入到指定的位置,比如索引号為<code>1</code>的位置:

4.

要删除list末尾的元素,用<code>pop()</code>方法:

要删除指定位置的元素,用<code>pop(i)</code>方法,其中<code>i</code>是索引位置:

5.

要把某個元素替換成别的元素,可以直接指派給對應的索引位置:

6.

list裡面的元素的資料類型也可以不同

7.元組

另一種有序清單叫元組:tuple。tuple和list非常類似,但是tuple一旦初始化就不能修改,比如同樣是列出同學的名字:

8.

不可變的tuple有什麼意義?因為tuple不可變,是以代碼更安全。如果可能,能用tuple代替list就盡量用tuple。

9.

tuple的陷阱:當你定義一個tuple時,在定義的時候,tuple的元素就必須被确定下來

定義的不是tuple,是<code>1</code>這個數!這是因為括号<code>()</code>既可以表示tuple,又可以表示數學公式中的小括号,這就産生了歧義

是以,隻有1個元素的tuple定義時必須加一個逗号<code>,</code>

10.

最後來看一個“可變的”tuple:

因為清單是可變的,是以這個元組是“可變的”

11.

<code>elif</code>是<code>else if</code>的縮寫,完全可以有多個<code>elif</code>,是以<code>if</code>語句的完×××式就是:

12.

輸入<code>1982</code>,結果報錯:

這是因為<code>input()</code>傳回的資料類型是<code>str</code>,<code>str</code>不能直接和整數比較,必須先把<code>str</code>轉換成整數

13.

Python的循環有兩種,一種是for...in循環,依次把list或tuple中的每個元素疊代出來,看例子:

14.

如果要計算1-100的整數之和,從1寫到100有點困難,幸好Python提供一個<code>range()</code>函數,可以生成一個整數序列,再通過<code>list()</code>函數可以轉換為list。比如<code>range(5)</code>生成的序列是從0開始小于5的整數:

15.

第二種循環是while循環,隻要條件滿足,就不斷循環,條件不滿足時退出循環。比如我們要計算100以内所有奇數之和,可以用while循環實作:

16.

在循環中,<code>break</code>語句可以提前退出循環

這兩個語句通常都必須配合<code>if</code>語句使用。

17.字典

Python内置了字典:dict的支援,dict全稱dictionary,在其他語言中也稱為map,使用鍵-值(key-value)存儲,具有極快的查找速度。

18.

(1)初始化字典

(2)插入字典元素

把資料放入dict的方法,除了初始化時指定外,還可以通過key放入:

19.

由于一個key隻能對應一個value,是以,多次對一個key放入value,後面的值會把前面的值沖掉

如果key不存在,dict就會報錯

20.

要避免key不存在的錯誤,有兩種辦法,一是通過<code>in</code>判斷key是否存在:

(3)查詢字典元素

二是通過dict提供的get方法,如果key不存在,可以傳回None,或者自己指定的value:

(4)查詢字典元素

注意:傳回<code>None</code>的時候Python的互動式指令行不顯示結果。

21.

(5)删除字典元素

要删除一個key,用<code>pop(key)</code>方法,對應的value也會從dict中删除:

22.

請務必注意,dict内部存放的順序和key放入的順序是沒有關系的。

23.

和list比較,dict有以下幾個特點:

查找和插入的速度極快,不會随着key的增加而變慢;

需要占用大量的記憶體,記憶體浪費多。

而list相反:

查找和插入的時間随着元素的增加而增加;

占用空間小,浪費記憶體很少。

是以,dict是用空間來換取時間的一種方法。

24.

需要牢記的第一條就是dict的key必須是不可變對象。

這是因為dict根據key來計算value的存儲位置,如果每次計算相同的key得出的結果不同,那dict内部就完全混亂了。這個通過key計算位置的算法稱為雜湊演算法(Hash)。

25.

list是可變的,就不能作為key

26.集合

set和dict類似,也是一組key的集合,但不存儲value。由于key不能重複,是以,在set中,沒有重複的key。

要建立一個set,需要提供一個list作為輸入集合:

(1)初始化集合

注意,傳入的參數<code>[1, 2, 3]</code>是一個list,而顯示的<code>{1, 2, 3}</code>隻是告訴你這個set内部有1,2,3這3個元素,顯示的順序也不表示set是有序的。。

重複元素在set中自動被過濾:

27.

(2)添加集合元素

通過<code>add(key)</code>方法可以添加元素到set中,可以重複添加,但不會有效果:

(3)删除集合元素

通過<code>remove(key)</code>方法可以删除元素:

(4)集合間的交集、并集

set可以看成數學意義上的無序和無重複元素的集合,是以,兩個set可以做數學意義上的交集&amp;、并集| 等操作:

28.

set的原理和dict一樣,是以,同樣不可以放入可變對象,因為無法判斷兩個可變對象是否相等,也就無法保證set内部“不會有重複元素”。

29.

而對于不可變對象,比如str,對str進行操作呢: