日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

☆ 10个小技巧,让你的 Python 代码更加优雅~ ☆

發布時間:2024/5/17 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ☆ 10个小技巧,让你的 Python 代码更加优雅~ ☆ 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

10個小技巧改進的 Python 代碼,讓你的代碼更加簡潔、更加 Python 化。


1. 用enumerate代替range

如果你需要遍歷一個列表,并且需要同時獲取索引和元素,大多數情況可能會使用range(len(data))的語法。

比如我們要遍歷一個列表,找到所有的負數:

data = [1, 3, -5, 7, 9, -11] for i in range(len(data)):if data[i] < 0:print(f"索引:{i},元素:{data[i]}")

輸出:

索引:2,元素:-5 索引:5,元素:-11

雖然這種方法有效,但如果使用 Python 內置的enumerate函數會更好,這個函數會返回遍歷過程中當前索引和當前元素值作為一個元組,因此可以直接輸出索引和值:

data = [1, 3, -5, 7, 9, -11] for i, v, in enumerate(data):if v < 0:print(f"索引:{i},元素:{v}")

輸出:

索引:2,元素:-5 索引:5,元素:-11

2. 深入理解list,替代for循環

假如我們要創建一個從0~9的平方數的列表,一種簡單的方法是先創建一個list,然后通過for循環每次將一個數的平方append到列表的結尾。

squares = [] for i in range(10):squares.append(i ** 2) print(squares)

輸出:

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

但其實通過列表生成式,我們有一種更快捷的方法,只需要一行代碼就能夠實現相同的功能。

squares = [i ** 2 for i in range(10)] print(squares)

輸出:

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

3. 通過 Python 內置的 sorted() 方法對復雜的對象進行排序

排序的需求在很多場景中都很常見,Python中的可迭代對象(列表、元組、字典)都可以進行排序,內置函數sorted()讓我們甚至都不需要自己實現排序算法。

data = [1, 3, -5, 7, 9, -11] sortedData = sorted(data) print(sortedData)

輸出:

[-11, -5, 1, 3, 7, 9]

sorted()方法自動將列表按照升序排序,如果你想按照降序排序,可以使用sorted()的參數reverse = True。

sorted()方法同樣也適用于元組類型的數據,但是注意排序的結果將返回一個列表。

data = (1, 3, -5, 7, 9, -11) print(data) sortedData = sorted(data) print(sortedData)

輸出:

(1, 3, -5, 7, 9, -11) [-11, -5, 1, 3, 7, 9]

對于復雜的可迭代對象,比如我們可以創建一個列表,列表中的每一個元素都是一個人的字典信息,然后我們按照每個人的年齡進行排序。

我們可以用sorted()的key參數,傳入一個匿名函數,讓排序按照我們預想的方式進行。

data = [{"name": "Alex", "age": 18},{"name": "Band", "age": 21},{"name": "Coco", "age": 17}] sorted_data = sorted(data, key=lambda x: x["age"]) print(sorted_data)

輸出:

[{'name': 'Coco', 'age': 17}, {'name': 'Alex', 'age': 18}, {'name': 'Band', 'age': 21}]

4. 使用集合Set存儲唯一值

如果你有一個包含多個值的列表,并且需要去重,一個不錯的技巧是將我們的列表轉換為一個集合。

Python的集合是一種無序的數據類型,并且沒有重復元素,還提供了不同集合之間的運算,可以求交集、并集和差集。

data = [1, 3, 3, 5, 5, 5, 7, 7, 7, 7, 9, 9, 9, 9, 9] setData = set(data) print(setData)

輸出:

{1, 3, 5, 7, 9}

5. 使用生成器以節省內存

有時候列表并不是最好的選擇。假如我們有一個非常大的列表,有10000個元素,我們想計算所有元素的總和,雖然可以用列表來做,當如果數據量特別大的話我們可能會遇到內存問題,更好的解決方案是使用生成器。

dataList = [i for i in range(10000)] print(sum(dataList)) dataGen = (i for i in range(10000)) print(sum(dataGen))

輸出:

49995000 49995000

列表生成式與生成器具有相同的語法,不同點在于列表生成式使用的是中括號,而生成器使用的是小括號。

生成器通過類似于懶加載的方式計算我們需要的元素,因此它一次只生成一個元素,并且只在需要的時候才生成。

我們可以使用sys的getsize()方法看一下列表和生成器的大小。

import sysdataList = [i for i in range(10000)] print(sys.getsizeof(dataList), "bytes")dataGen = (i for i in range(10000)) print(sys.getsizeof(dataGen), "bytes")

輸出:

85176 bytes 112 bytes

6. 在字典中獲取元素使用.get()并且設置默認值

假設我們有一個字典,其中包括不同的鍵,比如商品和價格,在我們的代碼中的某個點,想要獲得商品的價格。

當我們用[]簡單的訪問鍵時,如果鍵不在字典中,那么代碼將會報錯,引發一個KeyError。

dataDict = {"name": "Tesla","price": 250000 } print(dataDict["count"])

報錯:

Traceback (most recent call last):File "mian.py", line 5, in <module>print(dataDict["count"]) KeyError: 'count'

更好的方式是使用.get()方法,此時如果鍵不存在,則不會引發KeyError,而是返回一個默認值,如果我們不指定默認值,它會直接返回None,如果我們指定默認值,那么它會返回我們指定的默認值。

dataDict = {"name": "Tesla","price": 250000 } print(dataDict.get("count")) print(dataDict.get("count", 0))

輸出:

None 0

7. 計數器collections.Counter

如果你想計算列表中元素的數量,Python中有一個非常方便的工具。

from collections import Counterdata = [1, 3, 3, 5, 5, 5, 7, 7, 7, 7, 9, 9, 9, 9, 9] counter = Counter(data)print(counter)

輸出:

Counter({9: 5, 7: 4, 5: 3, 3: 2, 1: 1})

Counter可以統計列表中不同元素的數量,并且按照出現次數降序排列,這比我們自己計算要好得多。

如果你想知道某個元素的個數的話,可以直接通過[]訪問,如果這個元素不存在,那么將返回0,并且還可以通過most_common()方法返回排名靠前的幾個元素。

from collections import Counterdata = [1, 3, 3, 5, 5, 5, 7, 7, 7, 7, 9, 9, 9, 9, 9] counter = Counter(data)print(counter[7]) print(counter[11]) print(counter.most_common(2))

輸出:

4 0 [(9, 5), (7, 4)]

8. 使用f-String格式化字符串(適用于Python 3.6+)

f-String在我看來是最佳的格式化字符串方法,我們只需要在字符串前寫一個f,然后在字符串內部可以直接使用大括號來嵌入變量或表達式。

data = {"name": "Alex", "age": 18} string = f"I'm {data['name']} and I am {data['age']} years old." print(string)

輸出:

I'm Alex and I am 18 years old.

這種方式更簡單、更簡潔、速度也更快。

9. 使用.join()拼接字符串

假如我們有一個包含不同字符串的列表,我們想把所有的字符串通過空格拼接在一起,千萬不要再用for循環一個一個遍歷然后拼接了,一種更簡潔的方法是通過.joint()方法,它可以使用指定的字符將字符串拼接起來。

strings = ["Hello", "World", "!"] print(" ".join(strings)) print("_".join(strings))

輸出:

Hello World ! Hello_World_!

10. 使用雙星號語法合并字典(適用于Python 3.5+)

如果我們有兩個字典,并且希望將其合并成一個,此時我們可以使用雙星號**和大括號{}語法。

info1 = {"name": "Alex", "age": 18} info2 = {"name": "Alex", "city": "Bei Jing"} info = {**info1, **info2} print(info)

輸出:

{'name': 'Alex', 'age': 18, 'city': 'Bei Jing'}

以上就是這篇文章跟大家分享的小技巧。

如果你覺得這篇文章對你有幫助的話,歡迎一鍵三連~

總結

以上是生活随笔為你收集整理的☆ 10个小技巧,让你的 Python 代码更加优雅~ ☆的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。