25個(gè)超有用的Python代碼段
Python是一種通用的高級(jí)編程語(yǔ)言。用它可以做許多事,比如開(kāi)發(fā)桌面 GUI 應(yīng)用程序、網(wǎng)站和 Web 應(yīng)用程序等。
作為一種高級(jí)編程語(yǔ)言,Python 還可以讓你通過(guò)處理常見(jiàn)的編程任務(wù)來(lái)專注應(yīng)用程序的核心功能。并且,編程語(yǔ)言的簡(jiǎn)單語(yǔ)法規(guī)則進(jìn)一步簡(jiǎn)化了代碼庫(kù)的可讀性和應(yīng)用程序的可維護(hù)性。
與其他編程語(yǔ)言相比,Python 的優(yōu)勢(shì)在于:
與主要平臺(tái)和操作系統(tǒng)兼容;
有許多開(kāi)源框架和工具;
代碼具備可讀性和可維護(hù)性;
健壯的標(biāo)準(zhǔn)庫(kù);
標(biāo)準(zhǔn)測(cè)試驅(qū)動(dòng)開(kāi)發(fā)
在本文中,我將介紹 25 個(gè)簡(jiǎn)短且有用的代碼段,它們可以幫你完成日常任務(wù)。
1、在兩個(gè)變量之間交換值
在其他語(yǔ)言中,要在兩個(gè)變量間交換值而不是用第三個(gè)變量,我們要么使用算術(shù)運(yùn)算符,要么使用位異或(Bitwise XOR)。在 Python 中,它就簡(jiǎn)單多了,如下所示。
- a = 5b = 10 a,b = b,aprint(a) # 10print(b) # 5
2、檢查給定的數(shù)字是否為偶數(shù)
如果給定的數(shù)字為偶數(shù),則如下函數(shù)返回 Ture,否則返回 False。
- def is_even(num): eturn num % 2 == 0
- is_even(10) # True
3、將多行字符串拆分為行列表
以下函數(shù)可用于將多行字符串拆分為行列表。
- def split_lines(s): return s.split('n')split_lines('50n pythonn snippets') # ['50', ' python', ' snippets']
4、查找對(duì)象使用的內(nèi)存
標(biāo)準(zhǔn)庫(kù)的 sys 模塊提供了 getsizeof() 函數(shù)。該函數(shù)接受一個(gè)對(duì)象,調(diào)用對(duì)象的 sizeof() 方法,并返回結(jié)果,這樣做能使對(duì)象可檢查。
- import sysprint(sys.getsizeof(5)) # 28print(sys.getsizeof("Python")) # 55
5、反轉(zhuǎn)字符串
Python 字符串庫(kù)不像其他 Python 容器(如 list) 那樣支持內(nèi)置的 reverse()。反轉(zhuǎn)字符串有很多方法,其中最簡(jiǎn)單的方法是使用切片運(yùn)算符(slicing operator)。
- language = "python"reversed_language = language[::-1]print(reversed_language) # nohtyp
6、打印字符串 n 次
在不使用循環(huán)的情況下,要打印一個(gè)字符串 n 次是非常容易的,如下所示。
- def repeat(string, n): return (string * n)
- repeat('python', 3) # pythonpythonpython
7、檢查字符串是否為回文
以下函數(shù)用于檢查字符串是否為回文。
- def palindrome(string): return string == string[::-1]
- palindrome('python') # False
8、將字符串列表合并為單個(gè)字符串
下面的代碼段將字符串列表組合成單個(gè)字符串。
- strings = ['50', 'python', 'snippets']print(','.join(strings)) # 50,python,snippets
9、查找列表的第一個(gè)元素
此函數(shù)返回所傳遞列表的第一個(gè)元素。
- def head(list): return list[0]
- print(head([1, 2, 3, 4, 5])) # 1
10、查找存在于兩個(gè)列表中任一列表存在的元素
此函數(shù)返回兩個(gè)列表中任一列表中的每個(gè)元素。
- def union(a,b): return list(set(a + b))union([1, 2, 3, 4, 5], [6, 2, 8, 1, 4]) # [1,2,3,4,5,6,8]
11、查找給定列表中的所有唯一元素
此函數(shù)返回給定列表中存在的唯一元素。
- def unique_elements(numbers): return list(set(numbers))
- unique_elements([1, 2, 3, 2, 4]) # [1, 2, 3, 4]
12、求一組數(shù)字的平均值
此函數(shù)返回列表中兩個(gè)或多個(gè)數(shù)字的平均值。
- def average(*args): return sum(args, 0.0) / len(args)
- average(5, 8, 2) # 5.0
13、檢查列表是否包含所有唯一值
此函數(shù)檢查列表中的所有元素是否都是唯一的。
- def unique(list): if len(list)==len(set(list)): print("All elements are unique") else: print("List has duplicates")
- unique([1,2,3,4,5]) # All elements are unique
14、跟蹤列表中元素的頻率
Python 計(jì)數(shù)器跟蹤容器中每個(gè)元素的頻率。Counter() 返回一個(gè)以元素為鍵、以其出現(xiàn)頻率為值的字典。
- from collections import Counterlist = [1, 2, 3, 2, 4, 3, 2, 3]count = Counter(list)print(count) # {2: 3, 3: 3, 1: 1, 4: 1}
15、查找列表中最常用的元素
此函數(shù)返回列表中出現(xiàn)頻率最高的元素。
- def most_frequent(list): return max(set(list), key = list.count)
- numbers = [1, 2, 3, 2, 4, 3, 1, 3]most_frequent(numbers) # 3
16、將角度轉(zhuǎn)換為弧度
下面的函數(shù)用于將角度轉(zhuǎn)換為弧度。
- import mathdef degrees_to_radians(deg): return (deg * math.pi) / 180.0
- degrees_to_radians(90) # 1.5707963267948966
17、計(jì)算執(zhí)行一段代碼所需的時(shí)間
以下代碼段用于計(jì)算執(zhí)行一段代碼所需的時(shí)間。
- import timestart_time = time.time()a,b = 5,10c = a+bend_time = time.time()time_taken = (end_time- start_time)*(10**6)print("Time taken in micro_seconds:", time_taken) # Time taken in micro_seconds: 39.577484130859375
18、查找數(shù)字列表的最大公約數(shù)
此函數(shù)計(jì)算數(shù)字列表中的最大公約數(shù)。
- from functools import reduceimport mathdef gcd(numbers): return reduce(math.gcd, numbers)gcd([24,108,90]) # 6
19、查找字符串中的唯一字符
此代碼段可用于查找字符串中的所有唯一字符。
- string = "abcbcabdb" unique = set(string)new_string = ''.join(unique)print(new_string) # abcd
20、使用 lambda 函數(shù)
Lambda 是一個(gè)匿名函數(shù),它只能保存一個(gè)表達(dá)式。
- x = lambda a, b, c : a + b + cprint(x(5, 10, 20)) # 35
21、使用映射函數(shù)
此函數(shù)在將給定函數(shù)應(yīng)用于給定迭代的每個(gè)項(xiàng)(列表、元組等)之后,返回一個(gè)結(jié)果列表。
- def multiply(n): return n * n
- list = (1, 2, 3) result = map(multiply, list) print(list(result)) # {1, 4, 9}
22、使用篩選函數(shù)
此函數(shù)在通過(guò)一個(gè)函數(shù)過(guò)濾給定的序列,測(cè)試序列中的每個(gè)元素是否為真。
- arr = [1, 2, 3, 4, 5]arr = list(filter(lambda x : x%2 == 0, arr))print (arr) # [2, 4]
23、使用列表解析
列表解析(list comprehensions)為我們提供了一種基于某些迭代創(chuàng)建列表的簡(jiǎn)單方法。在創(chuàng)建過(guò)程中,可以將來(lái)自可迭代的元素有條件地包含到新列表中,并根據(jù)需要進(jìn)行轉(zhuǎn)換。
- numbers = [1, 2, 3]squares = [number**2 for number in numbers]print(squares) # [1, 4, 9]
24、使用切片運(yùn)算符
切片(Slicing)用于從給定序列中提取連續(xù)的元素序列或子序列。下面的函數(shù)用于連接兩個(gè)切片運(yùn)算的結(jié)果。首先,我們將列表從索引 d 切片到末尾,然后從開(kāi)頭切片到索引 d。
- def rotate(arr, d): return arr[d:] + arr[:d]
- if __name__ == '__main__': arr = [1, 2, 3, 4, 5] arr = rotate(arr, 2) print (arr) # [3, 4, 5, 1, 2]
25、使用函數(shù)鏈?zhǔn)秸{(diào)用
最后的代碼段用于從一行調(diào)用多個(gè)函數(shù)并計(jì)算結(jié)果。
- def add(a, b): return a + bdef subtract(a, b): return a - ba, b = 5, 10print((subtract if a > b else add)(a, b)) # 15