天天看點

初探Python_04_清單

一、清單是什麼

比較正式的解釋:

清單是由一系列按特定順序排列的元素組成,你可以建立包含字母清單中所有字母、數字或者所有家庭成員姓名的清單;也可以将任何東西加入清單中,元素之間可以沒有任何聯系。

通俗了解:

清單和Java中的數組類似,不過Java中的數組要求資料要保持同一資料類型,而清單沒有這個限制。如果把Java中數組比喻成集裝箱,那麼Python中的清單就相當于工廠,什麼都可以往裡放,沒有資料類型的限制。

和Java中的數組類似,Python的清單用[ ] 來表示清單,元素之間用逗号(英文)隔開。如:

>>> num = [1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> print(num)
[1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
           

二、清單元素的通路

由于清單是一個有序集合,是以我們可以通過索引來通路清單的元素。

索引下标從0開始

如:

>>> num = [1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> print(num)
[1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> print(num[3])
Shane
>>> print(num[5][2])
Python
           

三、清單元素的CRUD

1、修改清單元素

通過索引來修改指定元素的内容:

>>> num = [1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> print(num)
[1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> num[2] = 'Study'
>>> print(num)
[1, 2, 'Study', 'Shane', 3.14, [5, 6, 'Python']]
           

2、添加清單元素

添加元素共有三種方式:

<1>在清單末尾添加元素 – append();

<2>在清單任意位置添加元素 – insert();

<3>同時添加多個元素 – extend();

在清單末尾添加元素 – append()

>>> num = [1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> print(num)
[1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> num.append('好好學習')
>>> print(num)
[1, 2, 3, 'Shane', 3.14, [5, 6, 'Python'], '好好學習']
           

在清單任意位置添加元素 – insert()

>>> num = [1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> print(num)
[1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> num.insert(3, '你是最棒的')
>>> print(num)
[1, 2, 3, '你是最棒的', 'Shane', 3.14, [5, 6, 'Python']]
           

同時添加多個元素 – extend()

本質是兩個清單的合并,可以了解為擴容

>>> num = [1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> print(num)
[1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> num.extend(['加油', '100'])
>>> print(num)
[1, 2, 3, 'Shane', 3.14, [5, 6, 'Python'], '加油', '100']
           

3、删除清單元素

删除元素同樣有三種方式:

<1>使用del語句删除元素

<2>使用pop()方法删除元素

<3>使用remove()方法删除元素

使用del語句删除元素

根據索引進行删除(需要知道元素的索引)

>>> num = [1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> print(num)
[1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> del num[5]
>>> print(num)
[1, 2, 3, 'Shane', 3.14]
           

使用pop()方法删除元素

Python的清單底層就是資料結構中的棧,這個pop()方法和棧的出棧方法一樣:彈出清單末尾的元素,而且我們還可以接着使用這個元素。比如在開發中,我們要将使用者從活躍名單中删除,并讓他加入到非活躍名單就可以用這個方法。

pop()方法除了可以删除末尾元素,也可以和del語句一樣,根據索引删除指定位置的元素

在使用中如果無法确定使用那一個方法來删除,可以根據需求來選擇,如果我們要删除一個元素,且以後不會在使用到他,則可以選擇del語句,如果還要繼續使用,則使用pop()方法。

>>> num = [1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> print(num)
[1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> num01 = num.pop()
>>> print(num)
[1, 2, 3, 'Shane', 3.14]
>>> print(num01)
[5, 6, 'Python']
>>> num02 = num.pop(2)
>>> print(num)
[1, 2, 'Shane', 3.14]
>>> print(num02)
3
           

使用remove()方法删除元素

如果我們隻知道元素的值而不知道元素的索引位置,那麼我們可以使用remove()方法來删除元素。使用remove()方法删除的元素我們也可以繼續使用

>>> num = [1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> print(num)
[1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> num.remove('Shane')
>>> print(num)
[1, 2, 3, 3.14, [5, 6, 'Python']]
>>> num03 = 3.14
>>> num.remove(num03)
>>> print(num)
[1, 2, 3, [5, 6, 'Python']]
>>> print(num03)
3.14
           

4、清單元素的周遊

>>> num = [1, 2, 3, 'Shane', 3.14, [5, 6, 'Python']]
>>> for el in num:
		print(el)

1
2
3
Shane
3.14
[5, 6, 'Python']
           

四、數字清單

1、使用range()建立數字清單

range()可以快速的生成一系列數字,如:

>>> for value in range(1, 5):
	print(value)

1
2
3
4
           

列印了1~4的數字,不包含5.

要建立數字清單,可以使用函數list()将range()的結果直接轉換為清單。如果将range()作為list()的參數,輸出将為一個數字清單。如:

>>> value = list(range(1, 5))
>>> print(value)
[1, 2, 3, 4]
           

使用range()函數時,還可以指定步長。比如要列印1~10之間的偶數:

>>> value = list(range(2, 11, 2))
>>> print(value)
[2, 4, 6, 8, 10]
           

函數range()從2開始,不斷加2,直到達到或超過終值(11)。

簡單應用:

建立一個清單,其中包含1~10的平方:

nums = []
for value in range(1, 11):
    num = value**2
    nums.append(num)
print(nums)

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
           

2、數字清單的簡單統計計算

>>> nums = [1, 3, 2, 4, 6, 34, 67, 2, 4]
>>> min(nums)
1
>>> max(nums)
67
>>> sum(nums)
123
           

3、清單解析

清單解析将for循環和建立新元素的代碼合成一行,并自動附加新元素。

如上例中的建立一個清單,其中包含1~10的平方:

>>> nums = [num**2 for num in range(1 ,11)]
>>> print(nums)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
           

五、清單切片

1、生成切片

>>> nums = [1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> print(nums[0:3])
[1, 3, 2]
>>> print(nums[3:6])
[4, 5, 23]
>>> print(nums[:5])
[1, 3, 2, 4, 5]
>>> print(nums[3:])
[4, 5, 23, 23, 65, 23, 767, 0]
>>> print(nums[-3:])
[23, 767, 0]
           

1)給定索引範圍,可以生成任意位置的切片

2)沒有給定起始索引,自動從清單開頭開始提取

3)沒有給定終止索引,自動在清單末尾終止

4)負數索引傳回清單末尾相應距離的元素,可以用這個方法輸出清單末尾的任何切片

2、周遊切片

>>> nums = [1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> for num in nums[:3]:
	print(num)

1
3
2
           

3、複制清單

可以使用切片的方式複制清單,不指定起始索引和終止索引即可複制整個清單。

>>> nums = [1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> nums01 = nums[:]
>>> print(nums)
[1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> print(nums01)
[1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
           

複制之後的清單是一個獨立的清單,他們之間的CRUD互不影響。

不使用切片而直接将nums指派給nums01并不能起到複制效果,他們之間還是指向的同一個清單,元素操作時會互相影響。

六、組織清單

<1>使用sort()方法對清單進行永久性排序

<2>使用sorted()方法對清單進行臨時性排序

<3>倒着列印清單

<4>确定清單的長度

1、使用sort()方法對清單進行永久性排序

此方法是永久性的改變了清單的排序順序,不可逆轉

>>> nums = [1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> nums.sort()
>>> print(nums)
[0, 1, 2, 3, 4, 5, 23, 23, 23, 65, 767]
           

傳遞參數reverse=True可以将清單排序後再反轉

>>> nums = [1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> nums.sort(reverse=True)
>>> print(nums)
[767, 65, 23, 23, 23, 5, 4, 3, 2, 1, 0]
           

2、使用sorted()方法對清單進行臨時性排序

sorted()隻是臨時進行排序,不改變清單的原始順序

>>> nums = [1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> print(nums)
[1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> print(sorted(nums))
[0, 1, 2, 3, 4, 5, 23, 23, 23, 65, 767]
>>> print(nums)
[1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
           

同樣的,傳遞參數reverse=True也可以将排序後的清單反轉

>>> nums = [1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> print(nums)
[1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> print(sorted(nums))
[0, 1, 2, 3, 4, 5, 23, 23, 23, 65, 767]
>>> print(nums)
[1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> print(sorted(nums,reverse=True))
[767, 65, 23, 23, 23, 5, 4, 3, 2, 1, 0]
           

3、倒着列印清單

使用reverse()方法

>>> nums = [1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> print(nums)
[1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> nums.reverse()
>>> print(nums)
[0, 767, 23, 65, 23, 23, 5, 4, 2, 3, 1]
           

4、确定清單的長度

使用len()函數

>>> nums = [1, 3, 2, 4, 5, 23, 23, 65, 23, 767, 0]
>>> len(nums)
11