python基礎第四天

2021-10-08 17:59:08 字數 3085 閱讀 6931

1、通過鍵的名稱返回值,類似列表的訪問a['name']

2、get(),指定鍵不存在時可以返回指定值

3、列出所有的鍵值對 a.items()

4、列出所有的鍵a.keys() ,列出所有的值a.values()

5、len()鍵值對的個數

6、檢測乙個鍵是否在字典中 in

>>> a=

>>> a['name']

'name'

>>> a.get('score')

70>>> a.len()

traceback (most recent call last):

file "", line 1, in attributeerror: 'dict' object has no attribute 'len'

>>> len(a)

2>>> a.items()

dict_items([('name', 'name'), ('score', 70)])

>>> a.keys()

dict_keys(['name', 'score'])

>>> a.values()

dict_values(['name', 70])

1、給字典新增鍵值對,如果鍵已存在會覆蓋

2、使用update()將新字典中所有鍵值對全部新增到舊字典中,如果value相同則覆蓋

3、字典中元素的刪除,可以使用del()方法,或者用clear()刪除所有的鍵值對,pop()刪除指定鍵值對並返回對應的值物件;

4、popitem()隨機刪除和返回該鍵值對,字典是無序可變序列,所以是彈出隨機項。

>>> a

>>> b=

>>> a.update(b)

>>> b

>>> a

>>> a.del('class')

file "", line 1

a.del('class')

^syntaxerror: invalid syntax

>>> del(a['class'])

>>> a

>>> a.pop('age')

10>>> a

>>> clear(a)

traceback (most recent call last):

file "", line 1, in nameerror: name 'clear' is not defined

>>> a.clear()

>>> a

{}

del()是系統自帶方法,update(),pop(),clear()都是dict的方法。

序列解包可以用於元組列表字典。序列解包可以讓我們方便的對多個物件賦值。

序列解包應用於字典時,預設是對鍵進行操作,如果對鍵值進行操作,需要使用items(),如果需要對值進行操作,則需要使用values()。

>>> s=

>>> a,b=s

>>> a,b

('name', '***')

>>> c,d=s.items()

>>> c,d

(('name', 'xiaoyang'), ('***', 'woman'))

>>> e,f=s.values()

>>> e,f

('xiaoyang', 'woman')

5.1儲存的底層過程

字典物件的核心是雜湊表,雜湊表是稀疏陣列(總有空白元素的陣列),陣列的每個單元叫做bucket,每個bucket由兩部分:乙個是鍵物件的引用,乙個是值物件的引用,由於所有bucket結構和大小一致,可以通過偏移量來讀取bucket。

每個字典在建立時有乙個預設大小,在儲存過程中,對要儲存的鍵先進行編碼,根據一定的規則去依次填充字典,如雜湊值的編碼,如果所在位置為空,則直接填充,如果所在位置不空,則依次選擇右旁邊的位置進行填充,直到找到空的bucket。

python會根據雜湊表的擁擠程度擴容,創造更大的陣列,將原有內容拷貝到新陣列,接近三分之二時,陣列就會擴容。

5.2根據鍵查詢鍵值對的底層過程

同樣的,也是先計算要找的鍵的雜湊值,然後去相應位置去查詢,如果不空,則進行一次比較,看所在位置的鍵物件的雜湊值是否相同,如果相同則返回鍵值對,不同則去旁邊繼續尋找,直到遍歷所有,然後返回空。

總結。字典在記憶體中開銷巨大,典型的空間換時間。鍵查詢速度很快,往字典中新增新鍵可能會導致擴容,導致雜湊中鍵的次序變化,因此不要在遍歷字典的時候進行字典的修改。

集合時無序可變的,元素不能重複,集合底層是字典實現,集合的所有元素是字典的鍵物件,因此是不能重複且唯一的。

6.1集合建立和刪除

1、使用{}建立集合物件,並使用add()新增元素

2、使用set()轉化為集合

3、remove()刪除指定元素,clear()清空整個集合

6.2集合相關操作

a|b 並集a.union(b)

a&b 交集a.intersection(b)

a-b差集a.difference(b)

**略略

選擇結構通過判斷條件是否成立,來決定執行哪個分支,分為單分支,雙分支,多分支。

在迴圈結構中,條件表示式的值為false的情況如下:false,0,空值none,空序列物件(空字串,空列表,空字典等),空range,空迭代物件。除此之外,均為true。

條件表示式中不能有賦值操作符『=』

三元條件運算子

條件為真時的值,if(條件表示式)else 條件為假時的值

print('bingo' if 10>9 else 'wrong')
選擇結構巢狀,選擇結構可以巢狀使用時一定要注意空值好不同級別**塊的縮排量。

while迴圈

while 條件表示式:

迴圈體語句

a=5

while a<10:

a+=1

print(a)

b=0c=0

while b<100:

c+=b

b+=1

print(c)

python第四天 基礎知識

start 計數從 start 開始。預設是從 0 開始。例如range 5 等價於range 0,5 stop 計數到 stop 結束,但不包括 stop。例如 range 0,5 是 0,1,2,3,4 沒有5 step 步長,預設為1。例如 range 0,5 等價於 range 0,5,1 ...

學習python 第四天

python 迴圈結構 迴圈結構可以輕鬆的控制某件事重複 再重複的發生。在python中構造迴圈結構有兩種做法,一種是for in迴圈,一種是while迴圈。for in迴圈 如果明確的知道迴圈執行的次數或者是要對乙個容器進行迭代 後面會講到 那麼我們推薦使用for in迴圈 用for迴圈實現1 1...

Python學習 第四天

map函式可以對序列中個每個值進行某種批量轉化操作,然後將結果作為迭代器iterator返回,迭代器可以利用for迴圈或者next 函式來訪問每個值。map函式接收兩個引數,乙個是函式f,乙個是iterator,map在iterable的每個元素上依次執行函式f,並把結果作為新的iterator迭代...