成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一文帶您精通 Python 列表:操作方法、技巧與最佳實踐

開發(fā) 前端
探討了Python列表的多種方法與技巧,從基本操作如添加、刪除和訪問元素,到高級技巧如列表推導(dǎo)式、嵌套列表和函數(shù)式編程方法。理解淺拷貝和深拷貝的區(qū)別、合理使用列表推導(dǎo)式等優(yōu)化技巧,有助于提高編程效率和簡化數(shù)據(jù)處理。掌握這些方法對于數(shù)據(jù)科學(xué)、數(shù)據(jù)分析的編程至關(guān)重要。?

列表(list)是 Python 中最常見且最基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)之一,它是一個存儲對象的容器,可以包含任何類型的對象,包括字符串、數(shù)字,甚至其他對象。列表還可以混合存儲不同類型的數(shù)據(jù)。掌握列表的各種操作,如創(chuàng)建、添加、排序等,不僅可以提高編程效率,還能簡化數(shù)據(jù)處理過程。

基本操作

接下來將了解添加、移除或訪問列表元素的不同方法。從添加元素的方法開始。

添加元素

可以使用 append() 方法在列表末尾添加一個元素,或者使用 insert() 方法在指定位置添加一個元素。對于添加多個元素,最好的方法是使用 extend()。

fruits = ['apple', 'banana']


# Adds at the end
fruits.append('cherry')  
fruits

圖片圖片

# Inserts at position 1
fruits.insert(1, 'orange') 
fruits

圖片圖片

# Adds multiple items
fruits.extend(['date', 'elderberry',100])
fruits

圖片圖片

  • append() 和 extend() 在各自的用途上都很高效。append() 具有常數(shù)時間復(fù)雜度,使其在添加單個元素時非常高效。
  • insert():對于較長的列表來說,可能效率不高,因為列表中的所有后續(xù)元素可能需要移動以為新元素騰出空間。
  • extend() 比在循環(huán)中使用 append() 添加多個元素更高效,因為它最小化了反復(fù)調(diào)整列表大小的開銷。

移除元素

移除元素的方法有多種:

  • 使用 del 根據(jù)索引或切片刪除元素。
  • 使用 pop() 刪除指定位置的元素(如果沒有指定位置,則刪除最后一個元素)。
  • 使用 remove() 根據(jù)值刪除元素。
# Removes by value
fruits.remove('banana')
fruits

圖片圖片

popped_fruit = fruits.pop(2) 
print(popped_fruit)
fruits

圖片圖片

del fruits[0]
fruits

圖片圖片

  • remove(value):刪除給定值的第一個實例。當(dāng)你知道要刪除的值但不知道其位置時,這個方法非常有用。
  • pop(index):刪除指定位置的對象并返回它。如果未提供索引,則刪除并返回最后一個元素。當(dāng)你確切知道要刪除的對象的位置或需要返回已刪除的對象時,這個方法非常適合。
  • del list[index]:從給定的切片或索引中刪除項目。被刪除的對象不會被返回。當(dāng)你根據(jù)位置刪除切片或項目且不需要返回已刪除的對象時,這個方法非常理想。

訪問元素和切片

使用元素的索引是訪問列表中元素的簡單方法。對列表進(jìn)行切片可以獲取其中的一個子集。

first_fruit = fruits[0]
first_fruit

圖片圖片

# Gets a slice from index 1 to 2
fruit_slice = fruits[1:3]
fruit_slice

圖片圖片

  • 索引訪問:當(dāng)需要列表中的特定元素時,這是理想的方法。就像從書架上選擇一本書,確切地知道它的位置。
  • 切片:適用于多種需求。就像在書架上選擇兩個位置之間的一系列書。

搜索和排序列表

搜索元素

in 關(guān)鍵字可以用來檢查列表中是否存在某個元素。使用 index() 方法可以進(jìn)行更深入的搜索,例如確定某個元素的索引。以下是相關(guān)代碼。

fruits = ['apple', 'banana', 'cherry']
# Returns True if 'banana' is in the list
is_banana_present = 'banana' in fruits
is_banana_present

圖片圖片

# Gets the index of 'banana'  
banana_index = fruits.index('banana')
banana_index

圖片

排序列表

sort() 方法用于就地排序,會直接修改原始列表,使排序變得簡單。使用 sorted() 可以獲取排序后的列表副本,而不改變原始列表。

numbers = [3, 1, 4, 1, 5, 9, 2]
# Sorts the list in-place
numbers.sort()  
print(numbers)


# Returns a new sorted list. The original remains unchanged
sorted_numbers = sorted(numbers)
sorted_numbers

圖片

反轉(zhuǎn)列表

使用 reverse() 方法可以就地反轉(zhuǎn)列表,或者使用步長為 -1 的切片來創(chuàng)建一個反轉(zhuǎn)的列表副本。

numbers.reverse()
numbers

圖片圖片

reversed_numbers = numbers[::-1]
reversed_numbers

圖片圖片

  • 使用 reverse() 方法,當(dāng)你需要反轉(zhuǎn)列表元素且不再需要原始順序時。
  • 使用步長為 -1 的切片,當(dāng)你需要一個反轉(zhuǎn)版本的列表,同時保留原始列表的順序以供進(jìn)一步使用時。

高級列表操作技巧

上面描述了基本的列表方法和技巧,讓我們來看看一些更高級的列表操作技巧。

列表推導(dǎo)式用于簡潔高效的循環(huán)

列表推導(dǎo)式( list comprehensions)是一種基于現(xiàn)有列表創(chuàng)建新列表的簡單方法。它類似于用一行代碼編寫一個循環(huán)。這在應(yīng)用于數(shù)據(jù)科學(xué)的轉(zhuǎn)換數(shù)據(jù)或過濾數(shù)據(jù)時非常有用。

# Creates a list of squares
squares = [x**2 for x in range(10)]
squares

圖片圖片

通過添加條件來實現(xiàn)偶數(shù)的平方列表:

even_squares = [x**2 for x in range(10) if x % 2 == 0]
even_squares

圖片圖片

嵌套列表和矩陣操作

列表中的列表稱為嵌套列表。在數(shù)據(jù)科學(xué)中,它們常用于表示矩陣或二維數(shù)據(jù)。

# A 3x3 matrix
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(matrix)
first_row = matrix[0]
first_row

圖片圖片

使用 filter()、map() 和 reduce() 方法處理列表

這些方法為列表的函數(shù)式編程交互提供了工具:

  • filter() 根據(jù)條件選擇項目。
  • map() 對每個項目應(yīng)用一個函數(shù)。
  • reduce() 將所有項目聚合為一個輸出。

現(xiàn)在讓我們逐一應(yīng)用它們。首先創(chuàng)建一個列表并進(jìn)行過濾。以下是代碼示例:

from functools import reduce


# 創(chuàng)建一個列表
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


# 使用 filter() 選擇偶數(shù)
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  


# 使用 map() 將每個數(shù)字平方
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers)  


# 使用 reduce() 計算所有數(shù)字的和
sum_of_numbers = reduce(lambda x, y: x + y, numbers)
print(sum_of_numbers)

圖片圖片

處理列表副本

在處理 Python 列表副本時,有兩種類型的副本:淺拷貝(Shallow copies)和深拷貝(Deep copies)。

盡管淺拷貝會創(chuàng)建一個新列表,但它不會復(fù)制其內(nèi)部的元素。這意味著,如果你有嵌套列表,原始列表和副本將共享這些嵌套列表。另一方面,深拷貝完全獨立于原始列表,因為它會生成一個新列表,并復(fù)制其中的每個元素。

淺拷貝(Shallow copies

import copy
original_list = [[1, 2, 3], [4, 5, 6]]
shallow_copied_list = copy.copy(original_list)
shallow_copied_list[0][0] = 'changed'
print(f"{original_list=}")
print(f"{shallow_copied_list=}")

圖片圖片

深拷貝(Deep copies)

import copy
original_list = [[1, 2, 3], [4, 5, 6]]
shallow_copied_list = copy.deepcopy(original_list)
shallow_copied_list[0][0] = 'changed'
print(f"{original_list=}")
print(f"{shallow_copied_list=}")

在數(shù)據(jù)中處理復(fù)雜數(shù)據(jù)結(jié)構(gòu)時,了解淺拷貝和深拷貝之間的區(qū)別對于防止意外后果至關(guān)重要。

列表操作的提示

  • 構(gòu)建列表時使用列表推導(dǎo)式而不是循環(huán),它們通常更快且更易于理解。
  • 減少在循環(huán)中操作:在可能的情況下,使用列表推導(dǎo)式或 map() 生成列表比在循環(huán)中附加更有效。
  • 注意淺拷貝和深拷貝:了解其區(qū)別以防止意外修改。
  • 不要過度使用列表推導(dǎo)式:盡管功能強(qiáng)大,但如果過于復(fù)雜,可能會變得難以閱讀,保持簡單和整潔。

上述探討了Python列表的多種方法與技巧,從基本操作如添加、刪除和訪問元素,到高級技巧如列表推導(dǎo)式、嵌套列表和函數(shù)式編程方法。理解淺拷貝和深拷貝的區(qū)別、合理使用列表推導(dǎo)式等優(yōu)化技巧,有助于提高編程效率和簡化數(shù)據(jù)處理。掌握這些方法對于數(shù)據(jù)科學(xué)、數(shù)據(jù)分析的編程至關(guān)重要。

責(zé)任編輯:武曉燕 來源: 新語數(shù)據(jù)故事匯
相關(guān)推薦

2024-12-06 07:00:00

Python列表索引

2024-07-11 12:14:20

Pythonmapfilter

2025-04-30 10:36:17

2022-03-21 17:30:04

JetpackGoogle開發(fā)者

2024-03-12 17:54:55

容器類型Init

2024-05-21 09:45:40

機(jī)器學(xué)習(xí)人工智能XAI

2024-10-17 16:45:46

Python內(nèi)置函數(shù)

2024-10-06 14:01:47

Python裝飾器對象編程

2024-07-31 15:11:57

SymPypython數(shù)學(xué)運算

2025-02-05 12:06:15

正態(tài)分?jǐn)?shù)變換NST

2024-12-17 17:20:00

Python列表

2020-08-03 08:01:50

爬蟲技巧

2024-08-19 00:01:00

2010-02-01 09:40:08

Python操作

2023-07-07 08:00:00

KafkaSpringBoo

2024-05-28 11:32:01

2025-01-06 07:54:13

SPC控制圖工具

2024-07-16 10:43:45

偽對數(shù)可視化數(shù)據(jù)

2024-06-28 09:52:47

列表Python
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 婷婷亚洲综合 | 欧美一级在线免费 | 国产中文在线观看 | 国产激情在线 | 超碰男人天堂 | 亚洲精品电影网在线观看 | 99亚洲精品 | 中文字幕亚洲在线 | 伊人久久大香线 | 亚洲天堂成人在线视频 | a在线v| www国产成人 | 都市激情亚洲 | 一区二区免费在线 | 日本不卡一区二区三区在线观看 | 罗宾被扒开腿做同人网站 | 美日韩免费 | 日韩免费视频一区二区 | 欧美激情国产精品 | 国产美女一区 | 涩涩视频在线观看 | 午夜午夜精品一区二区三区文 | wwwsihu| 美女一级毛片 | 99精品99| 国产精品免费在线 | 亚洲视频免费在线观看 | 久久伊人免费视频 | 国产精品一区二区在线 | 青青久久久| 中文字幕日韩在线观看 | 精品欧美一区二区三区久久久 | 狠狠做深爱婷婷综合一区 | 亚洲黄色一区二区三区 | 最新免费视频 | 日韩视频一区二区三区 | av天天干| 一级做a爰片久久毛片免费看 | 久久99精品久久久久久噜噜 | 91国产精品| 欧美日韩成人网 |