在 Python 中,list 是一種有序的、可變的集合,使用方括號 [] 表示。你可以在列表中存儲任何數據類型,
包括整數、字串、甚至其他列表。Python 提供了許多內建的函數和方法來處理列表。
fruits = ['apple', 'banana', 'cherry']
# 使用index訪問列表中的元素
print(fruits[0]) # 'apple'
# 使用index修改列表中的元素
fruits[1] = 'blueberry' # ['apple', 'blueberry', 'cherry']
# 在列表末尾添加元素
fruits.append('mango') # ['apple', 'blueberry', 'cherry','mango']
# 刪除列表中的元素
fruits.remove('apple') # ['blueberry', 'cherry','orange']
# 獲取列表的長度
print(len(fruits)) # 3
fruits = ['apple', 'banana', 'cherry']
函數/方法 | 描述 | 範例 |
---|---|---|
append(x) |
在列表末尾添加元素 x |
fruits.append('mango') # ['apple', 'blueberry', 'cherry','mango'] |
insert(i, x) |
在索引 i 處插入元素 x |
fruits.insert(1, 'grape') #['apple', 'grape','banana', 'cherry'] |
remove(x) |
刪除列表中的第一個值為 x 的元素 |
fruits.remove('apple') #['grape','banana', 'cherry'] |
pop([i]) |
移除並返回列表中索引為 i 的元素(默認為最後一個元素) |
fruits.pop(2) #['apple', 'banana'] |
sort() |
就地排序列表中的元素 | fruits.sort() #['apple', 'banana', 'cherry'] |
reverse() |
將列表中的元素反轉 | fruits.reverse() #['cherry','banana','apple'] |
extend(iter) |
使用一個可迭代對象擴展列表 | fruits.extend(['kiwi', 'peach']) #['apple', 'banana', 'cherry','kiwi', 'peach'] |
index(x) |
返回列表中找到的第一個值為 x 的元素的索引 |
fruits.index('banana')#2 |
count(x) |
返回列表中值為 x 的元素個數 |
fruits.count('apple') #1 |
clear() |
清空列表中的所有元素 | fruits.clear() #[] |
copy() |
返回列表的一個淺拷貝 | new_fruits = fruits.copy() #['apple', 'banana', 'cherry'] |
len(list) |
返回列表的長度 | len(fruits) #3 |
Before 一般列表生成式:
number =[]
for i input().split():
nums.append(int(i))
After 快速列表生成式:
nums =[int(i) for i in inpiut().split()]
List Comprehension 快速生成列表基本上有三個元素: 運算式 ,for loop, if條件判斷(options)
語法解說:
遍例輸入內容轉換為整數並加入到新的列表int_list = [int(i) for i in input().split()]
這段代碼的功能說明:input().split()
input() 從使用者獲取輸入,通常輸入一行內容。
split() 將這行內容按空格分割成一系列子字串,並返回一個包含這些子字串的列表。
例如,假設使用者輸入 "1 2 3 4",那麼 input().split() 會得到列表 ["1", "2", "3", "4"]。
int(i) for i in input().split()
列表生成式
這裡的列表生成式遍歷 input().split() 返回的每一個子字串 i,並將它轉換為整數 int(i)。每個轉換的結果會加入到新的列表中。這樣,就可以得到一個包含整數的列表。
將結果存入 int_list
最終,所有轉換完成的整數會組成一個列表,並賦值給 int_list。如果用戶輸入的是 "1 2 3 4",則 int_list 的值將是 [1, 2, 3, 4]。
#一般列表生成式
squares = []
for i in range(5):
if i % 2 == 1:
squares.append(i ** 2)
#快速列表生成式
squares = [i ** 2 for i in range(5) if i % 2 ==1]
print(squares) # [0, 1, 4, 9, 16]
squares =:將生成的列表賦值給變數 squares。
range(5):
range(5) 是一個 Python 內建函數,會生成一個從 0 到 4 的整數序列,即 [0, 1, 2, 3, 4]。這段程式碼中,range(5) 生成了五個數字:0, 1, 2, 3, 4,並將每個數依序賦值給變數 i。
i ** 2 for i in range(5):
這是列表生成式的核心部分。它會遍歷 range(5) 中的每一個數字 i,對每個 i 執行平方操作 (i**2),然後將結果添加到新的列表中。
if i % 2 == 1
:這是一個條件判斷,只有當 i 除以 2 的餘數為 1 (也就是說,i 是奇數) 時,才會將 i 的平方加入到新的列表中。
sub_list = fruits[1:3] # 返回第1到第3個元素,不包括第3個
將字符串轉換為列表
chars = list("hello") # ['h', 'e', 'l', 'l', 'o']
將列表轉換為字符串
string = ','.join(['a', 'b', 'c']) # 'a,b,c'
enumerate() 是一個內建函數,用於在迭代列表或其他可迭代對象時,同時獲取元素的索引和值。這在需要同時知道元素位置和內容時非常有用,且讓代碼更簡潔。
students = ["Alice", "Bob", "Charlie"]
for index, student in enumerate(students):
print(f"{index}: {student}")
#0: Alice
1: Bob
2: Charlie
enumerate() 的工作方式:
enumerate() 會將每個元素與其索引一起返回,這樣我們就可以輕鬆獲取每個元素的索引和內容。例如:
使用 start 參數
如果希望索引從 1 開始而不是 0,可以設置 start=1:
for index, student in enumerate(students, start=1):
print(f"{index}: {student}")
#1: Alice
2: Bob
3: Charlie
enumerate() 也可以和列表生成式一起使用,快速生成新列表。例如,對每個元素進行操作並生成包含其索引的描述:
students_with_index = [f"{index}: {student}" for index, student in enumerate(students)]
print(students_with_index)
#['0: Alice', '1: Bob', '2: Charlie']
項目 | 值傳遞(Copy by Value) | 引用傳遞(Copy by Reference) |
---|---|---|
對象類型 | 不可變對象(如 int , float , str , tuple ) |
可變對象(如 list , dict , set ) |
複製的內容 | 複製變數的值,即新的變數和原變數值獨立 | 複製對象的引用,新的變數和原變數指向相同的內存地址 |
修改是否影響原變數 | 不會影響原變數 | 修改新變數會影響原變數 |
範例 | x = 10 y = x y = 20 不會影響 x 的值 |
a = [1, 2, 3] b = a b.append(4) 會影響 a 的值 |
用法場景 | 適用於不變的數據,如數字、字串等 | 適用於需修改的數據,如列表、字典等 |