30個python教你學會優雅的寫程式碼
連結:
來源:知乎
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
技巧 01:變數的多重賦值
Python 允許我們在一行中為多個變數賦值。變數可以用逗號分隔。在一行中為變數多重賦值有很多好處。它可用於為多個變數分配多個值,或為單個變數分配多個值。讓我們來看一個問題陳述,其中,我們必須給變數 a 和 b 賦值 50 和 60。通常的程式碼如下所示:
a = 50
b = 60
print(a,b)
print(type(a))
print(type(b))
輸出
50 60
<class 'int'>
<class 'int'>
條件 I:等於變數的值
當變數和多個賦值的值相等時,每個值將儲存在所有變數中。
a , b = 50 , 60
print(a,b)
print(type(a))
print(type(b))
輸出
50 60
<class 'int'>
<class 'int'>
這兩個程式碼都給出了相同的結果。這就是使用一行賦值的好處。
條件 II:大於變數的值
讓我們嘗試增加前一個程式碼中的值的數量。可以將多個值賦給單個變數。將多個值賦給一個變數時,必須在變數名前使用星號。
a , *b = 50 , 60 , 70
print(a)
print(b)
print(type(a))
print(type(b))
輸出
50
[60, 70]
<class 'int'>
<class 'list'>
第一個值將分配給第一個變數,第二個變數將從給定值中獲取一組值。這將建立一個列表型別物件。
條件 III:一個值分配給多個變數
我們可以將一個值賦給多個變數。每個變數將使用等號來分隔。
a = b = c = 50
print(a,b,c)
print(type(a))
print(type(b))
print(type(c))
輸出
50 50 50
<class 'int'>
<class 'int'>
<class 'int'>
技巧 02:交換兩個變數
交換是兩個變數的值相互交換的過程。這在電腦科學的許多操作中都很有用。在這裡,我編寫了程式設計師用來交換值以及最佳解決方案的兩個主要方法。
方法 I:使用臨時變數
此方法使用一個臨時變數來儲存一些資料。以下程式碼是用臨時變數名編寫的。
a , b = 50 , 60
print(a,b)
temp = a+b #a=50 b=60 temp=110
b = a #a=50 b=50 temp=110
a = temp-b #a=60 b=50 temp=110
print("After swapping:",a,b)
輸出
50 60
After swapping: 60 50
方法 II:不使用臨時變數
下面的程式碼是在不使用臨時變數的情況下交換變數。
a , b = 50 , 60
print(a,b)
a = a+b #a=110 b=60
b = a-b #a=110 b=50
a = a-b #a=60 b=50
print("After swapping:",a,b)
輸出
50 60
After swapping: 60 50
方法 III:Python 中的最佳解決方案
這是使用 Python 交換變數的另一種方法。在上個技巧中,我們已經瞭解了多重賦值我們可以使用交換的概念。
a , b = 50 , 60
print(a,b)
a , b = b , a
print("After swapping",a,b)
輸出
50 60
After swapping 60 50
技巧 03:字串反轉
在 Python 中反轉字串還有一個很酷的技巧。用於反轉字串的概念成為字串切片。任何字串都可以在變數名之後使用符號 [::-1] 進行反轉。
my_string = "MY STRING"
rev_string = my_string[::-1]
print(rev_string)
輸出
GNIRTS YM
技巧 04:在一行中拆分單詞
在一行中拆分單詞不需要特殊的演算法。為此,我們可以使用關鍵字 split()。在這裡,我編寫了兩種拆分單詞的方法。
方法 I:使用迭代
my_string = "This is a string in Python"
start = 0
end = 0
my_list = []
for x in my_string:
end=end+1
if(x==' '):
my_list.append(my_string[start:end])
start=end+1
my_list.append(my_string[start:end+1])
print(my_list)
輸出
['This ', 'is ', 'a ', 'string ', 'in ', 'Python']
方法 II:使用 split 函式
my_string = "This is a string in Python"
my_list = my_string.split(' ')
print(my_list)
輸出
['This ', 'is ', 'a ', 'string ', 'in ', 'Python']
技巧 05:將單詞列成一行
這是與上一個部分相反的過程中。在這個部分中,我們將使用 join 函式將單詞列表轉換為單行。下面給出了使用 join 函式的語法。
語法:"".join(string)
my_list = ['This' , 'is' , 'a' , 'string' , 'in' , 'Python']
my_string = " ".join(my_list)
輸出
This is a string in Python
技巧 06:多次列印字串
我們可以使用乘法運算子多次列印字串。這是重複字串的一種非常有效的方法。
n = int(input("How many times you need to repeat:"))
my_string = "Python\n"
print(my_string*n)
輸出
How many times you need to repeat:3
Python
Python
Python
技巧 07:使用加法運算子連線兩個字串
可以在不使用 join 函式的情況下連線各種字串。我們可以使用加法運算子(+)來完成這個操作。
a = "I Love "
b = "Python"
print(a+b)
輸出
I Love Python
技巧 08:多個條件運算子
在一個程式中結合兩個或多個條件運算子,我們可以使用邏輯運算子。但是,透過連線運算子也可以得到同樣的結果。例如,當一個變數的值大於 10 且小於 20 時,列印某些內容,則程式碼將如下所示:
a = 15
if (a>10 and a<20):
print("Hi")
取而代之的是,我們可以將條件運算子組合成單個表示式:
a = 15
if (10 < a < 20):
print("Hi")
輸出
Hi
技巧 09:在列表中查詢最頻繁的元素
在列表中出現次數最多的元素,那麼它將是列表中最頻繁的元素。下面的程式碼片段將幫助你從列表中獲取最頻繁的元素。
my_list = [1,2,3,1,1,4,2,1]
most_frequent = max(set(my_list),key=my_list.count)
print(most_frequent)
輸出
1
技巧 10:查詢列表中所有元素的出現次數
前面的程式碼將給出最頻繁的值。如果需要知道列表中所有唯一元素的出現次數,那麼可以使用 collections 模組。collections 是 Python 中一個非常棒的模組,它提供了很多特性。Counter 方法提供了一個包含元素和出現項對的字典。
from collections import Counter
my_list = [1,2,3,1,4,1,5,5]
print(Counter(my_list))
輸出
Counter({1: 3, 5: 2, 2: 1, 3: 1, 4: 1})
技巧 11:檢查兩個字串的易位構詞
如果一個字串由另一個字串中的字元組成,那麼這兩個字串就是易位構詞(Anagram)。我們可以使用來自 collections 模組的相同的 Counter 方法。
from collections import Counter
my_string_1 = "RACECAR"
my_string_2 = "CARRACE"
if(Counter(my_string_1) == Counter(my_string_2)):
print("Anagram")
else:
print("Not Anagram")
輸出
Anagram
技巧 12:建立帶範圍的數字序列
函式 range() 對於建立數字序列很有用。它在許多程式碼片段中都很有用。Range 函式的語法如下:
語法:range(start, end, step)
讓我們試著建立一個偶數列表。
my_list = list(range(2,20,2))
print(my_list)
輸出
[2, 4, 6, 8, 10, 12, 14, 16, 18]
技巧 13:多次重複元素
與字串乘法類似,我們可以使用乘法運算子多次建立一個用元素填充的列表。
my_list = [3]
my_list = my_list*5
print(my_list)
輸出
[3, 3, 3, 3, 3]
技巧 14:在三元運算子中使用條件
在大多數情況下,我們在 Python 中使用巢狀的條件結構。可以用三元運算子代替單行,而不是使用巢狀結構。語法如下所示。
語法:Statement1 if True else Statement2
age = 25
print("Eligible") if age>20 else print("Not Eligible")
輸出
Eligible
技巧 15:使用 Python 進行列表理解
列表理解(List Comprehension)是從另一個列表中建立列表的一種非常緊湊的方式。請看以下程式碼。第一個是使用簡單迭代編寫的,第二個是使用列表理解建立的。
square_list = []
for x in range(1,10):
temp = x**2
square_list.append(temp)
print(square_list)
輸出
[1, 4, 9, 16, 25, 36, 49, 64, 81]
使用列表理解
square_list = [x**2 for x in range(1,10)]
print(square_list)
輸出
[1, 4, 9, 16, 25, 36, 49, 64, 81]
技巧 16:將可變轉換為不可變
函式 frozenset()用於將可變迭代物件轉換為不可變物件。使用這個函式,我們可以凍結一個物件,而不改變它的值。
my_list = [1,2,3,4,5]
my_list = frozenset(my_list)
my_list[3]=7
print(my_list)
輸出
Traceback (most recent call last):
File "<string>", line 3, in <module>
TypeError: 'frozenset' object does not support item assignment
當我們在列表中應用 frozenset() 函式時,專案分配是受限的。
技巧 17:用 Floor 和 Ceil 函式進行四捨五入
Floor 和 Ceil 是數學函式,可用於浮點數。Floor 函式返回小於浮點值的整數,而 Ceil 函式返回大於浮點值的整數。要是用這個函式,我們必須匯入 math 模組。
import math
my_number = 18.7
print(math.floor(my_number))
print(math.ceil(my_number))
輸出
18
19
技巧 18:返回布林值
有時我們必須透過檢查某些引數的條件來返回布林值。我們可以直接返回條件,而不是寫 if else 語句。下面的程式碼將產生相同的輸出。
方法 I:使用 If Else 條件
def function(n):
if(n>10):
return True
else:
return False
n = int(input())
if(function(n)):
print("Eligible")
else:
print("Not Eligible")
方法 II:不使用 If Else 條件
def function(n):
return n>10
n = int(input())
print("Eligible") if function(n) else print("Not Eligible")
輸出
11
Eligible
技巧 19:在一行中建立函式
Lambda 是 Python 中的一個匿名函式,它可以在一行中建立函式。下面給出了使用 Lambda 函式的語法。
語法:lambda arguments: expression
x = lambda a,b,c : a+b+c
print(x(10,20,30))
輸出
60
技巧 20:對列表中所有元素應用函式
Map 是一個高階函式,它為列表中所有元素應用特定的函式。
語法:map(function, iterable)
my_list = ["felix", "antony"]
new_list = map(str.capitalize,my_list)
print(list(new_list))
輸出
['Felix', 'Antony']
技巧 21:將 Lambda 和 Map 函式一起使用
這個函式可以用 Python 中的 Lambda 函式替換。下面的程式碼用於建立數字列表的平方。
my_list = [1, 2, 3, 4, 5]
new_list = map(lambda x: x*x, my_list)
print(list(new_list))
輸出
[1, 4, 9, 16, 25]
技巧 22 從一個函式返回多個值
一個 Python 函式可以返回多個值,而不需要任何額外的需求。我們可以透過逗號分隔這些來返回值。
def function(n):
return 1,2,3,4
a,b,c,d = function(5)
print(a,b,c,d)
輸出
1 2 3 4
技巧 23:使用 Filter 函式過濾值
Filter 函式用於過濾可迭代物件中的一些值。Filter 函式的語法如下所示。
語法:filter(function, iterable)
def eligibility(age):
return age>=24
list_of_age = [10, 24, 27, 33, 30, 18, 17, 21, 26, 25]
age = filter(eligibility, list_of_age)print(list(age))
輸出
[24, 27, 33, 30, 26, 25]
技巧 24:在 Python 中合併兩個詞典
在 Python 中,我們可以合併兩個字典,而不需要任何特定的方法。下面的程式碼是合併兩個字典的示例。
dict_1 = {'One':1, 'Two':2}
dict_2 = {'Two':2, 'Three':3}
dictionary = {**dict_1, **dict_2}
print(dictionary)
輸出
{'One': 1, 'Two': 2, 'Three': 3}
技巧 25:獲取物件的大小
記憶體的大小根據物件的型別的不同而不同。我們可以使用 sys 模組中的 getsizeof() 函式來獲取物件的記憶體。
import sys
a = 5
print(sys.getsizeof(a))
輸出
28
技巧 26:將兩個列表合併為詞典
Zip 函式在 Python 中有很多優點,使用 zip 函式,可以從兩個列表中建立詞典。
list_1 = ["One","Two","Three"]
list_2 = [1,2,3]
dictionary = dict(zip(list_1, list_2))
print(dictionary)
輸出
{'Two': 2, 'One': 1, 'Three': 3}
技巧 27:計算程式的執行時間
Time 是 Python 中另一個有用的模組,可以用來計算執行時間。
import time
start = time.clock()
for x in range(1000):
pass
end = time.clock()
total = end - start
print(total)
輸出
0.00011900000000000105
技巧 28:刪除列表中的重複元素
出現多次的元素稱為重複元素。我們可以簡單地使用 typecasting 來刪除重複的元素。
my_list = [1,4,1,8,2,8,4,5]
my_list = list(set(my_list))
print(my_list)
輸出
[8, 1, 2, 4, 5]
技巧 29:用 Python 列印月曆
Calendar 模組有許多與日期的操作相關的功能。我們可以使用以下程式碼來列印月曆。
import calendar
print(calendar.month("2020","06"))
輸出
June 2020
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
技巧 30:使用 Zip 函式進行迭代
Zip 函式支援使用迴圈迭代多個可迭代的過程。在下面的程式碼中,兩個列表同時被迭代。
list_1 = ['a','b','c']
list_2 = [1,2,3]
for x,y in zip(list_1, list_2):
print(x,y)
輸出
a 1
b 2
c 3
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70013542/viewspace-2905541/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【優雅寫程式碼系統】springboot+mybatis+pagehelper+mybatisplus+druid教你如何優雅寫程式碼Spring BootMyBatisUI
- 看promise教你如何優雅的寫js非同步程式碼PromiseJS非同步
- 30秒內便能學會的30個超實用Python程式碼片段Python
- 如何寫出優雅的程式碼?
- 寫出優雅的js程式碼JS
- 編寫更優雅的 JavaScript 程式碼JavaScript
- 如何用 SpringBoot 優雅的寫程式碼Spring Boot
- 如何寫出優雅耐看的JavaScript程式碼JavaScript
- 編寫優雅程式碼的最佳實踐
- 如何提高Java程式碼質量-優雅的寫程式碼Java
- 優雅的程式碼
- golang如何優雅的編寫事務程式碼Golang
- 我是如何將業務程式碼寫優雅的
- 30天學習編寫30個Swift小程式Swift
- PHPer這樣寫程式碼也許更優雅PHP
- 用python寫小遊戲,沒有學過python的也會這個打程式碼Python遊戲
- 助您寫出優雅的Java程式碼七點建議Java
- 如何用 es6+ 寫出優雅的 js 程式碼JS
- 幾個簡單的技巧讓你寫出的vue.js程式碼更優雅Vue.js
- 教你更優雅地寫 API 之「列舉使用」API
- 如何優雅的打包前端程式碼前端
- 教你更優雅地寫 API 之「記錄日誌」API
- 3個例子教你重構 Python 程式碼Python
- 6 個例子教你重構 Python 程式碼Python
- 類的優雅寫法
- 如何優雅的寫Markdown
- 用Python寫個魂鬥羅,另附30個Python小遊戲原始碼Python遊戲原始碼
- 怎麼讓程式碼不再臃腫,寫的像詩一樣優雅
- 寫了多年的Java,直到看到Kotlin,原來程式碼可以如此優雅!JavaKotlin
- Guava - 拯救垃圾程式碼,寫出優雅高效,效率提升N倍Guava
- 現在哪個 UI 會寫程式碼?UI
- 日常 Python 程式設計優雅之道Python程式設計
- 帶引數的 Python 裝飾器讓你的程式碼更優雅Python
- 即學即用的 30 段 Python 非常實用的程式碼Python
- 500行程式碼,教你用python寫個微信飛機大戰行程Python
- 教你更優雅地寫 API 之規範響應資料API
- 如何編寫優雅的DockerfileDocker
- 想寫出優雅的程式碼?試試這些ES6小tips