list和tuple是Python內置的有序集合,一個是可變的,一個是不可變滴;這都不是事,主要是理解一下「指向不變」。
看圖說話:安全
理解了這個這兩玩意就差很少了。app
先懟list有序集合好比你想列出你想的一系列東西:函數
變量laughter就是一個list。一樣的用上節講的len()函數獲取list元素的個數
記住這是獲取的是listd列表「個數、個數、個數」重要的事說三遍。spa
用索引訪問每一個元素的位置,索引是從 0開始的、0開始的、0開始的
索引也是有容忍限度的超過了就會原地爆炸(報錯)若是列表中元素個數賊多,想獲取後面的元素就要實行曲線救國了。寫個例子瞧瞧對象
最後一個索引就用len(test)-1;用「-1」獲取最後吊車尾的元素,以此類推獲取倒數第2、第三的元素,一樣超出範圍也是沒法忍受的就會報錯。注意「-1」就是按個數來算的最後一個,而不是索引從0開始,切記、切記、切記。blog
list是一個不安穩的列表它是可變的索引
(1) 追加元素到最後;append()
(2) 插入到指定位置;insert()索引
(3) 刪除吊車尾元素;pop()
(4) 刪除指定位置元素;pop(i) i是索引位置
(5) 替換元素,直接賦值;
(6) list元素裏也能夠包含list;
(7) 空list長度爲0。
下面就能夠對號入座了ip
如今開始懟他的同胞tuple了外號叫:元組,是個比較執拗的傢伙,一旦初始化了就不能修改了,開始你的表演:
(1) list和tuple長的賊像,一個比較硬朗(「[]」),一個比較圓潤(「()」)關注第1、二個例子;它不能使用append()、insert()、也不能賦值,但獲取元素的手段和list是一致的,第二個例子說明肯定了這個元素就是 不可更改的,這樣顯得代碼更加有安全感,因此說能用tuple代替list就用tuple;(2) 看第3、第四個例子定義一個空的tuple,能夠正確顯示結果「()」,但定義一個tuple元素結果倒是「1」,說好的不可變呢,還不是由於計算機不知道把「()」當成是數學公式的括號呢,仍是tuple呢,這應該得打場架,最後Python就來救場了,說好定義tuple時,加個逗號,來消除誤解;數學
(3) 例子看第五個。it
好了最後來解決咱們的終極大BOSS:「指向不變」
膚淺的看tuple元素確實改變了,但其實變的不是tuple這傢伙,而是跟他長的很像的list在搗亂,tuple一開始指向list並未改爲別的list,歸根結底tuple所謂「不變」說的是每一個元素指向不變。指向了‘面’就不能指向‘對’。指向一個list,就不能改爲指向其它對象,但指向這個list自己是可變的。