Python高級編程與實踐:Python高級數據結構與編程技巧

高級數據結構:掌握Python中的高效編程技巧

學習目標

通過本課程,學員將深入了解Python中的高級數據結構,包括列表推導式、字典推導式、集合推導式和生成器表達式。學員將學習如何利用這些結構來編寫更簡潔、更高效的代碼,并了解它們在實際項目中的應用。

相關知識點

高級數據結構

學習內容

1 高級數據結構

1.1 列表推導式:簡化循環邏輯

列表推導式是Python中一種非常強大的特性,它允許以一種非常簡潔的方式創建列表。列表推導式的基本形式是[expression for item in iterable],其中expression是對item進行操作的表達式,iterable是一個可迭代對象,如列表、元組、字符串等。

1.1.1 基本使用

列表推導式可以用來替代傳統的循環結構,使代碼更加簡潔。例如,如果想要創建一個包含1到10的平方數的列表,可以使用傳統的循環方式:

squares = []
for i in range(1, 11):squares.append(i * i)
print(squares)

使用列表推導式,同樣的任務可以這樣完成:

squares = [i * i for i in range(1, 11)]
print(squares)
1.1.2 條件過濾

列表推導式還支持條件過濾,即在創建列表時根據條件選擇性地添加元素。例如,如果只想要1到10中偶數的平方數,可以這樣做:

even_squares = [i * i for i in range(1, 11) if i % 2 == 0]
print(even_squares)
1.1.3 嵌套循環

列表推導式還可以包含嵌套循環,這在處理多維數據時非常有用。例如,如果有兩個列表,想要創建一個包含所有可能組合的列表,可以這樣做:

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
combinations = [(x, y) for x in list1 for y in list2]
print(combinations)
1.2 字典推導式:高效創建字典

字典推導式與列表推導式類似,但用于創建字典。字典推導式的基本形式是{key_expression: value_expression for item in iterable},其中key_expression和value_expression分別是對item進行操作以生成鍵和值的表達式。

1.2.1 基本使用

字典推導式可以用來快速創建字典。例如,如果有一個列表,想要創建一個字典,其中鍵是列表中的元素,值是元素的平方,可以這樣做:

numbers = [1, 2, 3, 4, 5]
squares_dict = {x: x * x for x in numbers}
print(squares_dict)
1.2.2 條件過濾

字典推導式同樣支持條件過濾。例如,如果只想要1到5中偶數的平方數作為字典的值,可以這樣做:

even_squares_dict = {x: x * x for x in numbers if x % 2 == 0}
print(even_squares_dict)
1.3 生成器表達式:節省內存的高效方式

生成器表達式與列表推導式和字典推導式類似,但生成器表達式不立即創建一個完整的列表或字典,而是返回一個生成器對象,該對象可以在需要時生成值。生成器表達式的基本形式是(expression for item in iterable)。

1.3.1 基本使用

生成器表達式可以用來創建生成器對象,這些對象在迭代時按需生成值,從而節省內存。例如,如果想要創建一個生成1到10的平方數的生成器,可以這樣做:

squares_gen = (i * i for i in range(1, 11))
for square in squares_gen:print(square)
1.3.2 與列表推導式的對比

生成器表達式和列表推導式的主要區別在于內存使用。列表推導式會立即創建一個完整的列表,占用大量內存,而生成器表達式只在需要時生成值,因此更加節省內存。例如,如果處理一個非常大的數據集,使用生成器表達式可以避免內存溢出:

# 使用列表推導式,可能會導致內存溢出
# large_list = [i * i for i in range(1, 10000000)]# 使用生成器表達式,按需生成值,節省內存
large_gen = (i * i for i in range(1, 10000000))
for i, square in enumerate(large_gen):if i >= 10:  # 只打印前10個值breakprint(square)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/92114.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/92114.shtml
英文地址,請注明出處:http://en.pswp.cn/web/92114.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【C++】Stack and Queue and Functor

本文是小編鞏固自身而作,如有錯誤,歡迎指出!本次我們介紹STL中的stack和queue和其相關的一些容器和仿函數一.stack and queue1.適配器stack和queue其實不是真正意義上的容器,而是容器適配器,而容器適配器又是什么呢&am…

Python爬蟲實戰:研究OpenCV技術構建圖像數據處理系統

1. 引言 1.1 研究背景 在當今數字化時代,圖像作為一種重要的信息載體,廣泛存在于各類網站、社交媒體和在線平臺中。這些圖像數據涵蓋了從自然風光、人物肖像到商品展示、新聞事件等豐富內容,為數據分析和模式識別提供了寶貴的資源。隨著計算機視覺技術的快速發展,對大規模…

電感矩陣-信號完整性分析

電感矩陣:正如電容矩陣用于存儲許多信號路徑和返回路徑的所有電容量,我們也需要一個矩陣存儲許多導線的回路自感和回路互感值。需要牢記的是,這里的電感元件是回路電感。當信號沿傳輸線傳播時,電流回路沿信號路徑傳輸,然后立即從返…

JUC相關知識點總結

Java JUC(java.util.concurrent)是Java并發編程的核心工具包,提供了豐富的并發工具類和框架。以下是JUC的主要知識點,按難易程度分類,供你參考: 1. 基礎概念與工具類 1.1 并發與并行(易&#x…

激光頻率梳 3D 測量方案革新:攻克光學掃描遮擋,130mm 深孔測量精度達 2um

一、深孔測量的光學遮擋難題在精密制造領域,130mm 級深孔(如航空發動機燃油孔、模具冷卻孔)的 3D 測量長期受困于光學遮擋。傳統激光掃描技術依賴直射光束,當深徑比超過 10:1 時,孔壁中下部形成大量掃描盲區&#xff0…

clickhouse 中文數據的正則匹配

中文數據的正則匹配 在ClickHouse中,正則匹配通常用于數據的篩選、格式化等操作。以下是一些常用的正則匹配技巧: 1. 匹配中文字符 要匹配中文字符,可以使用以下正則表達式: SELECT * FROM my_table WHERE my_column REGEXP [\\x{4e00}-\\x{9fa5}];這里的 \\x{4e00}-\\…

[驅動開發篇] Can通信進階 --- CanFD 的三次采樣

驅動開發篇] Can通信進階 --- Can報文的三次采樣一、CAN FD的采樣次數1.1. 標準規定1.2. 傳統標準CAN采樣1.3. CAN FD的采樣策略1.3.1. 基礎采樣策略1.4. 配置位置1.5. 常見步驟二、CAN FD與標準CAN在采樣機制上的主要區別三、使用建議四. 芯片廠商實現4.1. 實際市面情況4.2. 例…

分布式文件系統06-分布式中間件彈性擴容與rebalance沖平衡

分布式中間件彈性擴容與rebalance沖平衡176_如果宕機的數據節點事后再次重啟會發生什么事情?某個之前某個宕機的數據節點DataNode-A又重啟后,肯定會再次注冊,并進行全量上報的流程,此時,就會導致DataNode-A上的文件副本…

芯祥科技:工業/車規級BMS芯片廠商 規格選型對比

芯祥科技公司專注于工業和車規級BMS芯片,電源芯片及可編程模擬芯片的研發與銷售,客戶遍及新能源儲能,汽車,電腦,服務器及電動工具等領域。并具有創業公司成功經驗,平均具有逾17年以上的芯片研發和市場銷售經…

莫隊基礎(Mo‘s algorithm)

莫隊算法簡介 莫隊算法是一種用于高效處理離線區間查詢問題的算法,由莫濤(Mo Tao)在2009年提出。其核心思想是通過對查詢區間進行分塊和排序,利用前一次查詢的結果來減少計算量,從而將時間復雜度優化至接近線性。 莫…

板卡兩個ADC,一個JESD204b sync正常,另一個JESD204B同步不上的問題

目錄 1.問題來源: 2.問題分析 進一步測試表現: 抓取204B高速鏈路數據如上所示。 說明不是配置流程的問題 1.問題來源: 在工控機上和部分電腦上面出現時鐘鎖不住的現象,無法正常使用板卡。 經過分析,發現板卡上有兩片ADC,其中一片的ADC的sync信號經過測量,是正常的,…

Android10 系統休眠調試相關

Android10 系統休眠調試相關實時打印休眠日志(實測好像沒作用):echo 1 > /sys/module/printk/parameters/console_suspend查看喚醒鎖:cat sys/power/wake_lock msm8953_64:/ # cat sys/power/wake_lock PowerManager.SuspendLockout PowerManagerServ…

一文掌握Bard機器翻譯,以及用python調用的4種方式(現已升級為 Gemini)

文章目錄一、Bard機器翻譯概述1.1. Bard機器翻譯介紹1.2 Bard機器翻譯的核心特點1.3 技術背景1.4 與同類模型對比二、Bard機器翻譯案例2.1 官方 REST API(推薦生產)2.2 通過Google Cloud API調用2.3 私有化部署方案2.4 開源鏡像 PyBard(無需 …

Kafka-Eagle 安裝

Kafka-Eagle官網 1)上傳壓縮包 kafka-eagle-bin-2.0.8.tar.gz 到集群第一臺的/opt/modules 目錄 2)解壓到本地 tar -zxvf kafka-eagle-bin-2.0.8.tar.gz 3)將 efak-web-2.0.8-bin.tar.gz 解壓至/opt/installs cd kafka-eagle-bin-2.0.8 …

接口請求的后臺發起確認

場景講解做業務開發時經常遇到這些場景,在后端代碼執行命中了些業務規則,需要前端用戶確認一下再往下執行。示例1:后端判斷申請1筆超過5萬的資金時會發起監管流程,告訴前端操作用戶風險并詢問是否確認執行。示例2:數據…

完整學習MySQL

DML 等術語概念 DML(Data Manipulation Language,數據操縱語言): DML主要用于插入、更新、刪除和查詢數據庫中的數據。常見的DML語句包括: INSERT:用于向表中插入新的數據行。UPDATE:用于修改…

大模型筆記1——李宏毅《2025機器學習》第一講

本篇筆記內容1、學習本節課需要的前置知識了解大模型的訓練過程:預訓練、后訓練、強化學習(2024年生成式AI導論前8講)了解基礎機器學習、深度學習概念(如transformer)(2021年機器學習課程)2、本…

CSS scrollbar-width:輕松定制滾動條寬度的隱藏屬性

在前端設計中,滾動條往往是一個容易被忽略的細節。默認的滾動條樣式常常與頁面設計格格不入,尤其是寬度 —— 過寬的滾動條會擠占內容空間,過窄又可能影響用戶操作。而 CSS 的scrollbar-width屬性,就像一把 “精細的尺子”&#x…

小迪23年-28~31-js簡單回顧

前端-js開發 課堂完結后欲復習鞏固也方便后續-重游-故寫此篇 從實現功能過渡到涉及的相關知識點 知識點 1、 JS 是前端語言,是可以被瀏覽器“看到”的,當然也可以被修改啊,被瀏覽器禁用網頁的 JS 功能啊之類的。所以一般都是前后端分離開發&…

JavaScript 概述

JavaScript 是一種高級、解釋型編程語言,主要用于網頁開發,使其具備動態交互功能。它是網頁三大核心技術之一(HTML、CSS、JavaScript),能夠直接嵌入 HTML 頁面并在瀏覽器中執行。核心特性動態弱類型語言 JavaScript 是…