日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

四個Python初學者式的錯誤及其優化建議

來源: 責編: 時間:2024-06-05 17:45:28 193觀看
導讀Python是一種非常容易學習的語言,而且它不會強迫你使用特定的慣例。但它也很容易陷入一些誤區,讓你看起來像個初學者。為了避免看起來像個完全的初學者,請查看下面的提示以及如何解決這些問題。1. 不使用enumerate()Pyth

Python是一種非常容易學習的語言,而且它不會強迫你使用特定的慣例。但它也很容易陷入一些誤區,讓你看起來像個初學者。為了避免看起來像個完全的初學者,請查看下面的提示以及如何解決這些問題。BJr28資訊網——每日最新資訊28at.com

1. 不使用enumerate()

Python使得遍歷諸如列表之類的事物變得非常容易。讓我們看看下面的示例:BJr28資訊網——每日最新資訊28at.com

vals = ['Python', 'is', 'fun!']for val in vals:    print(val)# Returns:# Python# is# fun!

但是,如果你需要引用每個項目的索引,該怎么辦呢?你可能已經遇到或者甚至編寫了類似下圖所示的代碼:BJr28資訊網——每日最新資訊28at.com

vals = ['Python', 'is', 'fun!']for i in range(len(vals)):  print(i, vals[i])# Returns:# 0 Python# 1 is# 2 fun!

這種方法雖然可行,但它并不優雅。它也不能立即清楚地說明你的代碼在做什么。BJr28資訊網——每日最新資訊28at.com

這就是enumerate()函數的用武之地!讓我們看看它如何使這個過程變得更加簡單:BJr28資訊網——每日最新資訊28at.com

vals = ['Python', 'is', 'fun!']for idx, val in enumerate(vals):  print(idx, val)# Returns:# 0 Python# 1 is# 2 fun!

作為一個專業提示,你甚至可以改變起始值。比如說,你想從1開始標記項目,那么你可以這樣簡單地寫:BJr28資訊網——每日最新資訊28at.com

vals = ['Python', 'is', 'fun!']for idx, val in enumerate(vals, start=1):    print(idx, val)    # Returns:# 1 Python# 2 is# 3 fun!

2. 不使用三元運算符

當你使用if-else語句來分配值時,你需要編寫很多行代碼來完成一個簡單的操作。請看下面的場景:BJr28資訊網——每日最新資訊28at.com

amount = 100if amount > 50:    raise_amount = 20else:    raise_amount = 10print(raise_amount)# Returns:# 20

在上面的例子中,我們創建了一個if-else語句,檢查某人的銷售金額是否超過50。如果是,那么他們就獲得20的漲幅。否則,他們獲得10的漲幅。BJr28資訊網——每日最新資訊28at.com

雖然我們的代碼很干凈,但并不簡潔。我們可以通過使用三元賦值來大大簡化它:BJr28資訊網——每日最新資訊28at.com

amount = 100raise_amount = 20 if amount > 50 else 10print(raise_amount)# Returns:# 20

這種方法最適用于非常簡單的作業。雖然可以做得更復雜,但不要為了簡潔而犧牲可讀性。BJr28資訊網——每日最新資訊28at.com

3. 使用推導式

3.1 不使用推導式

Python推導式使創建列表、字典和生成器變得輕而易舉。它們提供了一種優雅且易讀的方式來輕松創建數據結構。BJr28資訊網——每日最新資訊28at.com

讓我們看一個例子,看看如何使用for循環來創建一個平方數列表:BJr28資訊網——每日最新資訊28at.com

squares = []for i in range(1, 6):    squares.append(i ** 2)print(squares)# Returns:# [1, 4, 9, 16, 25]

現在,讓我們將其與列表推導式進行比較:BJr28資訊網——每日最新資訊28at.com

squares = [i ** 2 for i in range(1, 6)]print(squares)# Returns:# [1, 4, 9, 16, 25]

我們可以看到使用列表推導式要簡單和明確得多!代碼不僅更簡潔,而且也更容易閱讀。BJr28資訊網——每日最新資訊28at.com

創建字典推導式也同樣簡單。讓我們再次比較這兩種方法,創建一個字典,其中鍵是原始數字,值是它的平方:BJr28資訊網——每日最新資訊28at.com

squares = {}for i in range(1, 6):    squares[i] = i ** 2print(squares)# Returns:# {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

現在,讓我們看看如何通過字典推導式來簡化這一過程。BJr28資訊網——每日最新資訊28at.com

squares = {i: i**2 for i in range(1, 6)}print(squares)# Returns:# {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

現在,過度使用推導式也是一個問題。所以在這里有一個額外的提示:除非有必要,否則不要什么都用它們。BJr28資訊網——每日最新資訊28at.com

3.2 過度使用推導式

Python推導式非常強大。你可以內置復雜的if-else語句,甚至可以將它們嵌套在彼此之中。BJr28資訊網——每日最新資訊28at.com

讓我們看看如何加入if-else語句:BJr28資訊網——每日最新資訊28at.com

even_odd_numbers = [    "Even" if num % 2 == 0 else "Odd"     for num in range(10)]print(even_odd_numbers)# Returns:# ['Even', 'Odd', 'Even', 'Odd', 'Even', 'Odd', 'Even', 'Odd', 'Even', 'Odd']

在上面的例子中,我們使用三元運算符在繼續迭代的同時返回一個值。現在,這個例子相當簡單,但讓我們看一個更復雜的例子:BJr28資訊網——每日最新資訊28at.com

result = [x * 2 if x % 2 == 0 else x * 3 for x in range(10) if x != 5]

這絕對不是什么有趣、可讀的東西。這就引出了這里的重點——如果推導式比使用for循環更不清晰,那就不要寫推導式。BJr28資訊網——每日最新資訊28at.com

讓我們將這個推導式轉換為一個循環,看看它變得有多易讀:BJr28資訊網——每日最新資訊28at.com

result = []for x in range(10):    if x != 5:        if x % 2 == 0:            result.append(x * 2)        else:            result.append(x * 3)

可以看到,雖然我們用了更多行來編寫這段代碼,但它的可讀性卻大大提高了。BJr28資訊網——每日最新資訊28at.com

4. 不使用itertools

Python的itertools是內置于Python中的一個函數庫。雖然表面上看,它的許多函數似乎很簡單,但它們提供了優雅而強大的方式來遍歷不同的對象。BJr28資訊網——每日最新資訊28at.com

4.1 避免嵌套循環

假設你有兩個列表,你想遍歷所有可能的組合。可以編寫如下所示的嵌套for循環:BJr28資訊網——每日最新資訊28at.com

colors = ['Red', 'Green']sizes = ['S', 'M', 'L']for color in colors:    for size in sizes:        print(color, size)# Returns:# Red S# Red M# Red L# Green S# Green M# Green L

與我們在本文中介紹的其他方法類似,這種方法雖然有效,但并不優雅。BJr28資訊網——每日最新資訊28at.com

值得慶幸的是,itertools提供了product()函數,它可以創建所有項目的笛卡爾積。這意味著我們可以在一個for循環中直接解包這些值,代碼如下所示:BJr28資訊網——每日最新資訊28at.com

from itertools import productcolors = ['Red', 'Green']sizes = ['S', 'M', 'L']for color, size in product(colors, sizes):    print(color, size)# Returns:# Red S# Red M# Red L# Green S# Green M# Green L

可以看到這種方法簡單多了。BJr28資訊網——每日最新資訊28at.com

4.2 成對遍歷列表

在某些情況下,你需要成對地遍歷列表,這意味著你需要訪問一個項目及其相鄰的項目。BJr28資訊網——每日最新資訊28at.com

要做到這一點,可以編寫以下代碼:BJr28資訊網——每日最新資訊28at.com

vals = [1, 2, 3, 4]for i in range(len(vals) - 1):    print((vals[i], vals[i+1]))# Returns:# (1, 2)# (2, 3)# (3, 4)

這種方法效果很好,但可讀性不強,其作用也不是很明確。BJr28資訊網——每日最新資訊28at.com

這就是Python 3.10引入的pairwise()函數的用武之地。讓我們看看如何簡化代碼:BJr28資訊網——每日最新資訊28at.com

from itertools import pairwisevals = [1, 2, 3, 4]for pair in pairwise(vals):    print(pair)# Returns:# (1, 2)# (2, 3)# (3, 4)

這是我們之前編寫的代碼的一個更加明確的版本,使我們能夠立即了解代碼的目的。BJr28資訊網——每日最新資訊28at.com

itertools庫為用戶提供了許多有用的對象迭代函數。知道何時應用這些函數可以將你的技能提升到更高的層次。BJr28資訊網——每日最新資訊28at.com

結論

掌握Python不僅僅是記住語法,更重要的是擁抱優雅,并知道何時在簡潔和可讀性之間取得平衡。BJr28資訊網——每日最新資訊28at.com

牢記Python之禪:BJr28資訊網——每日最新資訊28at.com

Beautiful is better than ugly.BJr28資訊網——每日最新資訊28at.com

Explicit is better than implicit.BJr28資訊網——每日最新資訊28at.com

Simple is better than complex.BJr28資訊網——每日最新資訊28at.com

Complex is better than complicated.BJr28資訊網——每日最新資訊28at.com

Flat is better than nested.BJr28資訊網——每日最新資訊28at.com

Sparse is better than dense.BJr28資訊網——每日最新資訊28at.com

Readability counts.BJr28資訊網——每日最新資訊28at.com

上述提示應能真正幫助你領悟Python之禪的這一開始的幾行。BJr28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-92153-0.html四個Python初學者式的錯誤及其優化建議

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 萬字聊一聊RocketMQ一條消息短暫而又精彩的一生

下一篇: 詳解51種企業應用架構模式

標簽:
  • 熱門焦點
  • Find N3入網:最高支持16+1TB

    OPPO將于近期登場的Find N3折疊屏目前已經正式入網,型號為PHN110。本次Find N3在外觀方面相比前兩代有很大的變化,不再是小號的橫向折疊屏,而是跟別的廠商一樣采用了較為常見的
  • 三萬字盤點 Spring 九大核心基礎功能

    大家好,我是三友~~今天來跟大家聊一聊Spring的9大核心基礎功能。話不多說,先上目錄:圖片友情提示,本文過長,建議收藏,嘿嘿嘿!一、資源管理資源管理是Spring的一個核心的基礎功能,不
  • 一個注解實現接口冪等,這樣才優雅!

    場景碼猿慢病云管理系統中其實高并發的場景不是很多,沒有必要每個接口都去考慮并發高的場景,比如添加住院患者的這個接口,具體的業務代碼就不貼了,業務偽代碼如下:圖片上述代碼有
  • JVM優化:實戰OutOfMemoryError異常

    一、Java堆溢出堆內存中主要存放對象、數組等,只要不斷地創建這些對象,并且保證 GC Roots 到對象之間有可達路徑來避免垃 圾收集回收機制清除這些對象,當這些對象所占空間超過
  • 電視息屏休眠仍有網絡上傳 愛奇藝被質疑“薅消費者羊毛”

    記者丨寧曉敏 見習生丨汗青出品丨鰲頭財經(theSankei) 前不久,愛奇藝發布了一份亮眼的一季報,不僅營收和會員營收創造歷史最佳表現,其運營利潤也連續6個月實現增長。自去年年初
  • 消費結構調整丨巨頭低價博弈,拼多多還卷得動嗎?

    來源:征探財經作者:陳香羽隨著流量紅利的退潮,電商的存量博弈越來越明顯。曾經主攻中高端與品質的淘寶天貓、京東重拾“低價”口號。而過去與他們錯位競爭的拼多多,靠
  • 2納米決戰2025

    集微網報道 從三強爭霸到四雄逐鹿,2nm的廝殺聲已然隱約傳來。無論是老牌勁旅臺積電、三星,還是誓言重回先進制程領先地位的英特爾,甚至初成立不久的新
  • 首發天璣9200+ iQOO Neo8系列發布首銷售價2299元起

    2023年5月23日晚,iQOO Neo8系列正式發布。其中,Neo系列首款Pro之作——iQOO Neo8 Pro強悍登場,限時售價3099元起;價位段最強性能手機iQOO Neo8同期上市
  • SN570 NVMe SSD固態硬盤 價格與性能兼具

    SN570 NVMe SSD固態硬盤是西部數據發布的最新一代WD Blue系列的固態硬盤,不僅閃存技術更為精進,性能也得到了進一步的躍升。WD Blue SN570 NVMe SSD的包裝外
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
欧美日本不卡| 欧美成人免费网站| 一区二区三区视频观看| 亚洲永久免费观看| 久久久久亚洲综合| 欧美激情亚洲自拍| 国产精品久久久久婷婷| 国产一区美女| 亚洲福利一区| 亚洲图色在线| 久久精品av麻豆的观看方式| 欧美激情第8页| 欧美视频二区| 狠狠色狠狠色综合人人| 亚洲人成毛片在线播放| 亚洲欧美日韩中文播放| 久久久综合香蕉尹人综合网| 欧美日韩精品二区第二页| 国产欧美午夜| 日韩午夜精品视频| 久久精品123| 欧美人与禽猛交乱配| 国产精品视频午夜| 亚洲黄色片网站| 小辣椒精品导航| 欧美精品在线观看91| 国产在线不卡精品| 亚洲视频专区在线| 另类天堂视频在线观看| 国产精品老女人精品视频| 亚洲高清免费视频| 性感少妇一区| 欧美日韩综合视频| 亚洲国产成人在线| 欧美一级在线视频| 欧美日韩网址| 亚洲成色777777女色窝| 性视频1819p久久| 欧美日韩国内自拍| 亚洲激情电影在线| 久久精品国产清自在天天线| 欧美视频中文在线看 | 欧美日韩亚洲成人| 一区二区三区在线视频观看| 亚洲一区www| 欧美久久99| 在线精品亚洲一区二区| 欧美一区亚洲二区| 国产精品盗摄久久久| 亚洲精品久久视频| 久久午夜国产精品| 国产片一区二区| 亚洲永久免费av| 欧美日韩色一区| 亚洲精品女人| 你懂的成人av| 永久域名在线精品| 久久久精品免费视频| 国产午夜一区二区三区| 亚洲欧美精品| 国产精品vvv| 一区二区久久| 欧美精品免费播放| 亚洲激情网址| 欧美**字幕| 亚洲第一天堂av| 老司机精品视频一区二区三区| 国产性天天综合网| 小嫩嫩精品导航| 国产精品一区视频| 亚洲欧美视频一区二区三区| 国产精品国码视频| 亚洲视频第一页| 欧美视频在线观看视频极品| 一区二区三区日韩欧美精品| 欧美日本在线看| 9久re热视频在线精品| 欧美日本亚洲韩国国产| 99热在线精品观看| 欧美日韩在线不卡| 在线一区免费观看| 国产精品国产三级国产专播品爱网| 99视频日韩| 欧美日韩高清免费| 亚洲视频精品| 国产精品午夜在线观看| 午夜在线成人av| 国产日韩欧美不卡在线| 久久成人18免费观看| 国户精品久久久久久久久久久不卡| 欧美在线视频全部完| 国模大胆一区二区三区| 久久久久欧美精品| 亚洲高清资源综合久久精品| 欧美福利精品| 一区二区三区国产盗摄| 国产精品大片wwwwww| 午夜精品美女自拍福到在线| 国产亚洲综合在线| 久久综合伊人77777尤物| 亚洲国产精品欧美一二99| 欧美精品在线观看91| 亚洲一区在线观看视频| 国产欧美在线视频| 久久人人爽人人| 亚洲日本欧美日韩高观看| 欧美视频二区36p| 欧美在线视频一区二区| 亚洲高清在线观看一区| 欧美日韩在线免费观看| 亚洲综合成人婷婷小说| 国产在线拍揄自揄视频不卡99| 另类av导航| 中文在线不卡| 国内外成人在线| 欧美精品色一区二区三区| 亚洲欧美电影院| 在线欧美影院| 欧美午夜女人视频在线| 久久精品国产99| 日韩天堂av| 国产亚洲精品久久久久动| 欧美成人午夜影院| 亚洲欧美日韩一区在线观看| 永久免费视频成人| 欧美三区美女| 久久久久久97三级| 一区二区三区导航| 激情五月婷婷综合| 欧美日韩一区二区三区在线看| 欧美一区二区三区在线观看视频 | 欧美一区二区高清| 亚洲国产va精品久久久不卡综合| 欧美四级在线观看| 久久人人精品| 亚洲免费影视| 亚洲激情视频| 国产乱子伦一区二区三区国色天香| 久热精品视频| 亚洲欧美日韩综合一区| 亚洲经典三级| 国产一二三精品| 欧美日韩一区二区三区在线| 久久久久九九九| 亚洲一区二区三区精品在线观看| 在线观看国产一区二区| 国产精品福利在线观看| 老司机凹凸av亚洲导航| 欧美一二三区在线观看| 日韩亚洲欧美成人| 精品成人国产| 国产女同一区二区| 欧美日韩在线精品| 欧美xart系列高清| 久久电影一区| 亚洲一区二区三区免费观看| 亚洲啪啪91| 一区二区视频免费完整版观看| 国产精品久久久久影院色老大 | 一区在线播放视频| 国产精品影音先锋| 欧美激情中文不卡| 久久婷婷国产综合精品青草| 亚洲自拍偷拍麻豆| 日韩视频一区| 亚洲第一页中文字幕| 国产在线成人| 国产午夜亚洲精品理论片色戒| 欧美性大战久久久久久久| 欧美风情在线观看| 久久综合狠狠| 久久精品国产欧美亚洲人人爽| 亚洲欧美日韩在线观看a三区| 99综合在线| 亚洲九九精品| 亚洲国产片色| 极品少妇一区二区三区精品视频| 国产女主播一区| 国产精品露脸自拍| 欧美天堂亚洲电影院在线观看 | 欧美精品videossex性护士| 久久中文久久字幕| 久久精品91| 久久精品麻豆| 欧美中文字幕在线观看| 午夜精品久久久久久久久久久久| 宅男噜噜噜66国产日韩在线观看| 亚洲美女中出| 亚洲美女在线一区| 亚洲欧洲精品一区二区精品久久久| 激情六月婷婷久久| 国产自产精品| 国内精品久久久久久影视8| 国产亚洲福利一区| 国产一区二区三区高清| 国产亚洲欧美日韩精品| 国产一区二区中文字幕免费看| 国产欧美日韩精品丝袜高跟鞋| 国产精品羞羞答答| 国产情侣久久| 国产一区二区三区精品欧美日韩一区二区三区 | 久久综合九色综合欧美狠狠| 久热精品在线视频| 欧美成人a视频|