課時11 列表 乙個打了激素的陣列2

2021-09-09 07:21:34 字數 2918 閱讀 6230

目錄

一、從列表中獲取元素

二、從列表刪除元素

三、列表分片

四、列表分片的高階玩法

五、課後題

跟陣列一樣,我們可以通過元素的索引值index從列表獲取單個元素,注意,列表索引值是從0開始的。

下面實現了讓列表的前兩個位置互換

remove()方法並不能指定刪除某個位置的元素,這時要用del實現。del是乙個語句,不是乙個列表的方法。如果想刪除整個列表,還可以直接用del加列表名刪除

3.pop()

python中的列表是利用棧來進行儲存的,pop()方法預設是彈出列表中的最後乙個元素。當你為pop()方法加上乙個索引值作為引數時,它會彈出這個索引值所對應的元素

利用索引值,我們可以每次從列表獲取乙個元素。當我們一次性需要獲取多個元素,可以利用分片來簡單實現我們的要求

1.用乙個冒號隔開兩個索引值,左邊是開始的位置,右邊是結束的位置。注意,結束位置上的元素是不包括的。利用列表分片,可以得到原來列表的拷貝,原來的列表並沒有發生改變。

2.如果沒有開始位置,預設開始位置是0。

3,如果要得到從指定索引值到列表末尾的所有元素,把結束位置元素省去即可。

4.如果沒有索引值,而只是乙個冒號,將會得到整個列表的拷貝

注意,列表分片就是建立原列表的乙個拷貝,所以你想對列表做出某些修改,但同時你想保持原來那個列表,那麼直接使用列表分片的方法來獲取拷貝就很方便了。

分片操作還可以接受第三個引數作為步長,預設情況下是1

如果列表分片寫為[::2]

如果列表分片寫為[::-1],將會得到乙個反轉的原列表

測試題:

0. 下邊的列表分片操作會列印什麼內容?

>>> list1 = [1, 3, 2, 9, 7, 8]

>>> list1[2:5]

1. 請問 list1[0] 和 list1[0:1] 一樣嗎?

2. 如果你每次想從列表的末尾取出乙個元素,並將這個元素插入到列表的最前邊,你會怎麼做?

3. 有些魚油比較調皮,他說我想試試 list1[-3:-1] 會不會報錯,怎麼知道一試居然顯示 [9, 7],這是怎麼回事呢?

4. 在進行分片的時候,我們知道分片的開始和結束位置需要進行指定,但其實還有另外乙個隱藏的設定:步長。

「在普通的分片操作中,步長預設設定為1,表示逐個遍歷元素。其實我們可以人為調整步長以達到不可告人的秘密。」

>>> list1[0:6:2]

[1, 2, 7]

那麼依你推測,關於步長的知識點還有哪些(很多知識點都是通用的)?

5. 課堂上小甲魚說可以利用分片完成列表的拷貝 list2 = list1[:],那事實上可不可以直接寫成 list2 = list1 更加簡潔呢?

答案0.

1.不一樣。前者返回的是列表的第0個元素,後者返回的是只含有第0個元素的列表

2.小甲魚答案:

這裡我歪打正著產生了些許疑問,疑問和解決方案詳見**:參考外鏈

python 的列表很聰明,竟然支援負數索引,如圖:

正常索引是從左到右索引,負數索引是從右到左。

4.1) 之前提到的「簡潔」分片操作在這裡有效:

>>> list1[::2]

[1, 2, 7]

2) 步長不能為0,要不就走不動了:

>>> list1[::0]

traceback (most recent call last):

file "", line 1, in list1[::0]

valueerror: slice step cannot be zero

3) 步長可以是負數,改變方向(從尾部開始向左走)

>>> list1[::-2]

[8, 9, 3]

5.是不可以的。根據我們之前使用分片建立列表的拷貝

看上去貌似是一樣的,但是我們對list1進行排序

發現了吧,list1進行排序,list2並沒有受到影響,list3跟著list1改變了。這是因為python的變數就像乙個標籤,就乙個名字而已,貼哪是哪,指哪打哪。

列表 乙個打了激素的陣列1

有時候我們需要把一堆東西暫時儲存起來,因為他們有某種直接或者間接的聯絡,我們需要把他們放在某種 組 或者 集合 中,這將來可能要用上。很多接觸過程式設計的朋友都知道或者聽說過陣列,陣列這個概念呢,就是把一大堆同種型別的資料挨個兒擺在一塊兒,然後通過陣列下標進行索引。但是呢,陣列有乙個基本要求,就是你...

Python 列表 乙個打了激素的陣列

測試題 0.列表都可以存放一些什麼東西?答 我們說 python 的列表是乙個打了激素的陣列,如果把陣列比喻成貨櫃,那麼 python 的列表就是乙個大倉庫,ta 可以存放我們已經學習過的任何資料型別。mix 1,小甲魚 3.14,1,2,3 1.向列表增加元素有哪些方法?方法是將引數作為乙個元素增...

mysql 表列表 乙個MySQL表中的多列表顯示

從mysql表中顯示多列時遇到問題 這很簡單 我有28條記錄,我想做7行4行 每條記錄只有兩列 id 和name 表中的 控制代碼 我的問題是,當我使用 i 我究竟做錯了什麼?我是否需要另外乙個if宣告?不知道我要去 錯.這是我到目前為止的地方 table header.echo do fetch ...