1. 程式人生 > >小白學 Python(9):基礎資料結構(列表)(上)

小白學 Python(9):基礎資料結構(列表)(上)

人生苦短,我選Python

前文傳送門

小白學 Python(1):開篇

小白學 Python(2):基礎資料型別(上)

小白學 Python(3):基礎資料型別(下)

小白學 Python(4):變數基礎操作

小白學 Python(5):基礎運算子(上)

小白學 Python(6):基礎運算子(下)

小白學 Python(7):基礎流程控制(上)

小白學 Python(8):基礎流程控制(下)

前言

在開始今天的內容之前先簡單介紹一下 Python 內建的資料結構,包括:

  • 列表(list)
  • 元組(tuple)
  • 字典(dict)
  • 集合(set)

在Python語言中,以上4種資料結構和基礎資料型別(整數、浮點數等)統稱為“內建型別”(Built-in Types)。

列表(list)

Python list(列表),是Python中最常用的一種資料結構,它是一組用方括號括起來、逗號分隔的資料。

建立列表:

list1 = [1, 2, 3, 4, 5]
print(list1)

list2 = ['a', 'b', 'c', 'd', 'e']
print(list2)

輸出結果:

[1, 2, 3, 4, 5]
['a', 'b', 'c', 'd', 'e']

列表中的資料型別可以是相同的,如上面的 int 和 str ,也可以是不同的:

list3 = [1, 2, 3, 'a', 'b']
print(list3)

結果如下:

[1, 2, 3, 'a', 'b']

這個還不算什麼,還有更騷的操作,列表裡面是可以巢狀列表的:

list4 = [1, 2.33, 'a', list3]
print(list4)

結果如下:

[1, 2.33, 'a', [1, 2, 3, 'a', 'b']]

這一層一層的,又讓我想起了洋蔥。。。

空列表

list5 = []
print(list5)

列表的一些基操

檢視列表的型別

檢視型別的函式是 type() ,那麼如果我們看下列表的型別呢?

print(type(list4))

結果如下:

<class 'list'>

通過索引取出列表的元素

語法:列表名[索引]

list1 = [1, 2, 3, 4, 5]
print(list1[0])

這裡的數字 0 是列表的索引,含義是取出第 0 位的元素。

注意: 這裡的索引是從 0 開始的,例如 list1 的索引是 0 ~ 4 。

如果我們直接去取 list1 的索引為 5 的值:

list1 = [1, 2, 3, 4, 5]
print(list1[5])

這時會直接丟擲異常。

Traceback (most recent call last):
  File "F:/project/python-learning/base-data-list/Demo.py", line 20, in <module>
    print(list1[5])
IndexError: list index out of range

這個異常的含義是:列表索引超出範圍。

Python 列表除了正索引還有一個負索引,正索引是列表從頭到尾的方向,負索引的是從尾到頭。

列表:  ['a', 'b', 'c', 'd', 'e']
         |    |    |    |    |
正索引:  0    1    2    3    4
負索引:  -5  -4   -3   -2   -1

使用加號連線列表

語法: 列表1 + 列表2

print(list1 + list2)

結果如下:

[1, 2, 3, 4, 5, 'a', 'b', 'c', 'd', 'e']

對列表元素進行 for 迴圈

語法:
for 變數 in 列表:
print(變數)

for i in list1:
    print(i)

結果如下:

1
2
3
4
5

獲取列表長度

語法: len(列表)

print(len(list1))

print(len(list1 + list2))

結果如下:

5
10

檢查列表中是否存在某個元素

返回的是布林值 bool 。

print('a' in list1)
print(1 in list1)

結果如下:

False
True

刪除列表

語法: del 列表名

list1 = [1, 2, 3, 4, 5]

del list1
print(list1)

結果如下:

Traceback (most recent call last):
  File "D:/Development/Projects/python-learning/base-data-list/Demo.py", line 40, in <module>
    print(list1)
NameError: name 'list1' is not defined

很顯然,將 list1 刪除之後會報錯 list1 未定義。

刪除列表中索引為 i 的元素

語法: del list1[i]

list1 = [1, 2, 3, 4, 5]

del list1[2]
print(list1)

結果如下:

[1, 2, 4, 5]

返回列表中最大的值

語法:max(list1)

print(list1)
print(max(list1))
print(list4)
print(max(list4))

結果如下:

[1, 2, 4, 5]
5
[1, 2.33, 'a', [1, 2, 3, 'a', 'b']]
Traceback (most recent call last):
  File "D:/Development/Projects/python-learning/base-data-list/Demo.py", line 51, in <module>
    print(max(list4))
TypeError: '>' not supported between instances of 'str' and 'float'

list4 中取最大值報錯了,報錯原因是 'str' 和 'float' 無法比較大小。

返回列表中最小的值

語法:min(list1)

print(list1)
print(min(list1))
print(list4)
print(min(list4))

結果如下:

[1, 2, 4, 5]
1
[1, 2.33, 'a', [1, 2, 3, 'a', 'b']]
Traceback (most recent call last):
  File "D:/Development/Projects/python-learning/base-data-list/Demo.py", line 51, in <module>
    print(max(list4))
TypeError: '<' not supported between instances of 'str' and 'float'

list4 中取最小值報錯了,報錯原因和上面取最大是一樣的, 'str' 和 'float' 無法比較大小。

示例程式碼

本系列的所有程式碼小編都會放在程式碼管理倉庫 Github 和 Gitee 上,方便大家取用。

示例程式碼-Github

示例程式碼-Gi