Python List是常用的數據結構之一,它可以用來存儲任意元素的集合,並且支持動態調整大小。在Python中,List的實現採用了動態數組的方式,因此也被稱作Dynamic Array。
一、List的創建和賦值
創建List的方法非常簡單,直接用方括弧[]括起來,其中每個元素之間用逗號分隔,如下所示:
<!--代碼塊-->
my_list = [1, 2, 3, 4, 5]
可以看到,我們創建了一個包含5個元素的List。
也可以使用list()函數將其他可迭代對象轉換為List,如下所示:
<!--代碼塊-->
my_string = "Hello World"
my_list = list(my_string)
print(my_list) # ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
向List中添加元素可以使用append()函數、insert()函數和extend()函數,如下所示:
<!--代碼塊-->
my_list = [1, 2, 3, 4, 5]
my_list.append(6) # [1, 2, 3, 4, 5, 6]
my_list.insert(0, 0) # [0, 1, 2, 3, 4, 5, 6]
my_list.extend([7, 8]) # [0, 1, 2, 3, 4, 5, 6, 7, 8]
二、List的索引和切片
List的索引方式與字元串相同,可以通過下標獲取元素,同時也支持負數下標,表示倒數第幾個元素。如下所示:
<!--代碼塊-->
my_list = [1, 2, 3, 4, 5]
print(my_list[0]) # 1
print(my_list[-1]) # 5
同時,List還支持切片,可以通過下標範圍獲取部分元素,如下所示:
<!--代碼塊-->
my_list = [1, 2, 3, 4, 5]
print(my_list[1:3]) # [2, 3]
需要注意的是,切片下標是左閉右開的區間,即左邊的下標對應的元素會被包含,右邊的下標對應的元素不會被包含。
三、List的刪除和修改
與添加元素相對應,List還提供了多種刪除元素的方法,如下所示:
<!--代碼塊-->
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8]
my_list.pop() # 8,刪除最後一個元素
my_list.pop(0) # 0,刪除第一個元素
my_list.remove(2) # [1, 3, 4, 5, 6, 7],刪除特定元素
同時,List也支持直接對元素進行修改,如下所示:
<!--代碼塊-->
my_list = [1, 2, 3, 4, 5]
my_list[0] = 0 # [0, 2, 3, 4, 5]
四、List的排序和反轉
List支持多種排序方式,可以使用sort()函數進行排序,如下所示:
<!--代碼塊-->
my_list = [2, 3, 1, 5, 4]
my_list.sort() # [1, 2, 3, 4, 5]
當List中的元素為對象時,也可以通過傳入關鍵字參數key來指定排序的鍵,如下所示:
<!--代碼塊-->
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"Person({self.name}, {self.age})"
my_list = [Person("Amy", 20), Person("Bob", 18), Person("Cathy", 23)]
my_list.sort(key=lambda x: x.age) # [Person(Bob, 18), Person(Amy, 20), Person(Cathy, 23)]
List也支持反轉,可以使用reverse()函數進行反轉,如下所示:
<!--代碼塊-->
my_list = [1, 2, 3, 4, 5]
my_list.reverse() # [5, 4, 3, 2, 1]
五、List的複製和遍歷
在Python中,List的賦值操作實際上是引用的傳遞,因此修改一個List的副本,原List也會被修改。如果需要創建一個原List的副本,可以使用切片或者copy()函數進行複製,如下所示:
<!--代碼塊-->
my_list = [1, 2, 3, 4, 5]
my_list_copy = my_list[:] # [1, 2, 3, 4, 5]
my_list_copy[0] = 0 # [0, 2, 3, 4, 5]
print(my_list) # [1, 2, 3, 4, 5]
遍歷List可以使用for循環,如下所示:
<!--代碼塊-->
my_list = [1, 2, 3, 4, 5]
for item in my_list:
print(item)
當需要同時遍歷List的下標和元素時,可以使用enumerate()函數,如下所示:
<!--代碼塊-->
my_list = [1, 2, 3, 4, 5]
for index, item in enumerate(my_list):
print(index, item)
六、總結
Python List是常用的數據結構之一,它可以用來存儲任意元素的集合,並且支持動態調整大小。本文從創建List、索引和切片、刪除和修改、排序和反轉、複製和遍歷等多個方面對List進行了詳細的講解。
完整代碼如下所示:
<!--代碼塊-->
# 創建List
my_list = [1, 2, 3, 4, 5]
my_string = "Hello World"
my_list = list(my_string)
print(my_list)
# 添加元素
my_list.append(6)
my_list.insert(0, 0)
my_list.extend([7, 8])
# 索引和切片
print(my_list[0]) # 1
print(my_list[-1]) # 5
print(my_list[1:3]) # [2, 3]
# 刪除和修改
my_list.pop() # 8,刪除最後一個元素
my_list.pop(0) # 0,刪除第一個元素
my_list.remove(2) # [1, 3, 4, 5, 6, 7],刪除特定元素
my_list[0] = 0 # [0, 2, 3, 4, 5]
# 排序和反轉
my_list = [2, 3, 1, 5, 4]
my_list.sort() # [1, 2, 3, 4, 5]
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"Person({self.name}, {self.age})"
my_list = [Person("Amy", 20), Person("Bob", 18), Person("Cathy", 23)]
my_list.sort(key=lambda x: x.age) # [Person(Bob, 18), Person(Amy, 20), Person(Cathy, 23)]
my_list = [1, 2, 3, 4, 5]
my_list.reverse() # [5, 4, 3, 2, 1]
# 複製和遍歷
my_list = [1, 2, 3, 4, 5]
my_list_copy = my_list[:]
my_list_copy[0] = 0
print(my_list)
for item in my_list:
print(item)
for index, item in enumerate(my_list):
print(index, item)
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/303789.html