Python作為一門靈活、充滿技巧的語言,有著很多奇技淫巧,今天小編就跟大家分享一下在平時工作中所積累的技巧,這裡面既有語法上的技巧,也有庫函式的應用,可以幫助大家在平時的工作中提升效率,規避某些錯誤,一起來看看吧。
- 列表推導式
- 字典推導式
- 使用
zip
進行並行迭代 - 使用
enumerate
獲取迭代器索引和值 - 使用
collections.Counter
進行計數 - 使用
map
函式進行批次操作 - 使用列表解析展平列表
- 列表內容轉字串
- 去除列表中重複元素
- 將字典值作為引數傳遞
- 兩個變數值互換
- 連續賦值
- 鏈式比較
- 重複列表
- 重複字串
- 三目運算
- 字典合併
- 字串反轉
- 列表轉字串
- 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魔法師】,一起進群溝通學習~