Python魔法:20個讓你程式設計事半功倍的奇淫技巧(建議收藏)

Python魔法师發表於2024-03-08

Python作為一門靈活、充滿技巧的語言,有著很多奇技淫巧,今天小編就跟大家分享一下在平時工作中所積累的技巧,這裡面既有語法上的技巧,也有庫函式的應用,可以幫助大家在平時的工作中提升效率,規避某些錯誤,一起來看看吧。

  1. 列表推導式
  2. 字典推導式
  3. 使用 zip 進行並行迭代
  4. 使用 enumerate 獲取迭代器索引和值
  5. 使用 collections.Counter 進行計數
  6. 使用 map 函式進行批次操作
  7. 使用列表解析展平列表
  8. 列表內容轉字串
  9. 去除列表中重複元素
  10. 將字典值作為引數傳遞
  11. 兩個變數值互換
  12. 連續賦值
  13. 鏈式比較
  14. 重複列表
  15. 重複字串
  16. 三目運算
  17. 字典合併
  18. 字串反轉
  19. 列表轉字串
  20. for else 語句

1、列表推導式

使用一行程式碼生成列表,提高程式碼的簡潔性和可讀性。

squared = [x**2 for x in range(10)]
print(squared)

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

當我們使用列表推導式 [x**2 for x in range(10)] 時,它等價於使用普通的 for 迴圈來生成一個列表。讓我們將列表推導式轉換為等效的普通 for 迴圈程式碼

squared = []  # 建立一個空列表,用於存放計算結果

for x in range(10):  # 對於範圍內的每一個數 x
    squared.append(x**2)  # 計算 x 的平方並將結果新增到列表 squared 中

print(squared)  # 列印最終的列表 squared

2、字典推導式

類似列表推導式,用於建立字典。所以程式碼用大括號包裹

square_dict = {x: x**2 for x in range(5)}
print(square_dict)

結果
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

3、使用 zip 進行並行迭代

將多個可迭代物件壓縮在一起進行並行迭代。

names = ['Alice', 'Bob', 'Charlie']
ages = [30, 35, 40]

for name, age in zip(names, ages):
    print(name, age)

結果
Alice 30
Bob 35
Charlie 40

4、使用 enumerate 獲取迭代器索引和值

在迭代時獲取索引和對應的值,在迭代一些可迭代物件時(例如list,dict),可透過內建enumerate來獲取迭代元素的索引值

for index, value in enumerate(names):
    print(index, value)

5、使用 collections.Counter 進行計數

方便地計算可迭代物件中元素的頻率。

from collections import Counter

words = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
word_counts = Counter(words)
print(word_counts)

結果
Counter({'apple': 3, 'banana': 2, 'orange': 1})

6、使用 map 函式進行批次操作

透過map函式可進行批次操作,將函式應用於迭代器中的每個元素。

nums = [1, 2, 3, 4, 5]

def square(x):
    return x**2
# 程式碼表示將list的每個元素迭代後應用square函式中
squared_nums = list(map(square, nums))
print(squared_nums)

結果
[1, 4, 9, 16, 25]

7、使用列表解析展平列表

將巢狀的列表展平為一維列表。

nested_list = [[1, 2, 3], [4, 5], [6, 7, 8]]
flattened_list = [num for sublist in nested_list for num in sublist]
print(flattened_list)

結果
[1, 2, 3, 4, 5, 6, 7, 8]

還有一種方式可以連線兩個列表

  
a = [1, 2, 3]  
b = [5, 6, 7]  
  
c = [*a, *b]  
print(c)

結果
[1, 2, 3, 5, 6, 7]

8、列表內容轉字串

而列表中會存在字串、數字等型別的資料,透過map將列表中元素轉換成str型別,然後透過join函式就可以完成列表到字串的轉換。

9、去除列表中重複元素

list1 = [1,2,3,4,5,2,1,4,2,1]  
print(list(set(list1)))

結果
[1, 2, 3, 4, 5]

10、將字典值作為引數傳遞

當你想將一個字典的值作為引數傳遞給函式時,你可以使用 ** 運算子來解包字典並將其作為關鍵字引數傳遞給函式。以下是一個示例:

def greet(name, age):  
    print(f"Hello, {name}! You are {age} years old.")  
  
person_info = {'name': 'Alice', 'age': 30}  
  
greet(**person_info)

結果
Hello, Alice! You are 30 years old.

11、兩個變數值互換

>>> a=1
>>> b=2
>>> a,b=b,a
>>> a
2
>>> b
1

12、連續賦值

a = b = c = 50

13、鏈式比較

a = 15
if (10 < a < 20):
    print("Hi")

等價於

a = 15
if (a>10 and a<20):
    print("Hi")

14、重複列表

>>> [5,2]*4
[5, 2, 5, 2, 5, 2, 5, 2]

15、重複字串

>>> "hello"*3
'hellohellohello'

16、三目運算

age = 30
slogon = "牛逼" if  age == 30 else "niubility"

等價於

if age == 30:
    slogon = "牛逼"
else:
    slogon = "niubility"

17、字典合併

>>> a= {"a":1}
>>> b= {"b":2}
>>> {**a, **b}
{'a': 1, 'b': 2}
>>>

18、字串反轉

>>> s = "i love python"
>>> s[::-1]
'nohtyp evol i'
>>>

19、列表轉字串

>>> s = ["i", "love", "pyton"]
>>> " ".join(s)
'i love pyton'
>>>

20、for else 語句

檢查列表foo是否有0,有就提前結束查詢,沒有就是列印“未發現"

found = False
for i in foo: 
	if i == 0: 
		found = True
		break 
if not found: 
	print("未發現")

總結

以上就是小編為大家分享總結的Python技巧,大家還有什麼Python的奇淫技巧呢,歡迎轉載、收藏、有所收穫點贊支援一下。

關注公眾號【Python魔法師】,一起進群溝通學習~

qrcode.jpg

相關文章