5種非常棒的 Python 技巧,使你的代碼更優雅

2021-03-02 Python學習與數據挖掘

Python 是全世界程式設計師使用最廣泛的語言之一。它可用應用於機器學習、深度學習和數據科學的各種項目。語法簡潔也使得它成為 Python 初學者的首選語言。

今天教大家一些 Python 技巧,它可以使你的代碼更優雅和高效。

列表

只需一行代碼,讓你的代碼看起來更簡潔,並且看起來更專業。

a = [2,5,7,9]
b = []
for i in range(len(a)):
    b.append(a[i]+1)

這是正常的 code 方式,現在讓它更加簡潔、專業一點。

a = [2,5,7,9]
b = [a[i]+1 for i in range(len(a))] 

你可以看到代碼之間的差別。現在這只是一個簡單的例子,後續你會發現有更多的應用案例,並可以大幅幫你減少代碼長度。

反轉字符串

讓我們編寫一些代碼來反轉字符串。

def reverse_string(string):
     result=""
     for c in range(len(string),-1,-1):
          result = result + string[c]
     return result 

看起來有點亂吧, 用另一種方式來表達:

def reverse_string(string):
    result = [ string[c] for c in range(len(string),-1,-1)]
    return "".join(result)

看起來不錯吧,其實使用切片的方法可以更好,方法如下:

def reverse_string(string):
    return string[::-1]

將數字與數字進行求和

將數字與數字進行求和,這是一個非常簡單的問題,

首先,我們可以用傳統方法解決這個問題:

def sum_a_num(num):
    sum = 0
    while num > 0:
        sum+= num%10
        num//=10
    return sum

這是可以的,但在緊張的情況下,最終可能會與運算符發生拼寫錯誤或錯誤,最終得到錯誤的結果,並花費數小時嘗試調試代碼。

因此,要避免這種情況,有一個更好的方法做到這一點。

def sum_a_num(num):
    return sum(list(map(int,str(num))))

現在上述代碼所做的是:

map() 函數在字符串上遍數,並將每個字符轉換為整數;list() 函數將映射對象轉換為列表,然後求和;
num = 2367
str(num) = '2367'
list(map(int,str(num))) = [2,3,6,7]
sum(list(map(int(str(num)))) = 18

交換兩個數字

現在,這是一件非常簡單的事情。

x = 10
y = 15
x = x + y
y = x - y
x = x - y

但是,讓我們在一行代碼中做到這一點

x = 10
y = 15
x,y = y,x

這樣更好。不是嗎?

列表或字符串中最常見的元素

有多種方法可以實現此需求,我們可以使用循環以簡單的方式做到這一點。下面我分享兩種更高效的方法:

l = [1,2,1,4,6,2,7,8,2,2]
print(max(l,key = l.count))

或者

my_string = "python_is_great"
print(sorted(my_string,key = my_string.count)[0])

相關焦點

  • 讓你的 Python 代碼優雅又地道
    —— Edsger Wybe Dijkstra在Python社區文化的澆灌下,演化出了一種獨特的代碼風格,去指導如何正確地使用Python,這就是常說的pythonic。一般說地道(idiomatic)的python代碼,就是指這份代碼很pythonic。Python的語法和標準庫設計,處處契合著pythonic的思想。
  • 代碼這樣寫更優雅(Python版)
    題圖:unsplash.comPython 這門語言最大的優點之一就是語法簡潔,好的代碼就像偽代碼一樣,乾淨、整潔、一目了然。但有時候我們寫代碼,特別是 Python 初學者,往往還是按照其它語言的思維習慣來寫,那樣的寫法不僅運行速度慢,代碼讀起來也費盡,給人一種拖泥帶水的感覺,過段時間連自己也讀不懂。
  • 5種方法,加密你的Python代碼
    其中一個缺點,讓不少開發者頭疼不已,由於Python解釋器開源的關係,導致Python代碼無法加密,代碼的安全性得不到保障。當然,想要加密Python代碼,也並非無解。最常見的加密方式有4種,還有1種獨特的加密方式。
  • 這些Python代碼技巧,你肯定還不知道
    本文或許能夠讓你學到一些新技巧。inspect 模塊:https://docs.python.org/3/library/inspect.html下面的代碼示例使用 inspect.getsource() 列印自己的原始碼
  • 掌握這10個python技巧,讓你代碼工作如魚得水!
    福布斯最新發布的一篇報告指出,python的使用量在去年增長了456%。Netfix、IBM以及其它數以百計的公司都在使用python。包括Dropbox也是由python創建的。Dice的研究表明,python是世界上最熱門的技巧之一,根據程式語言的流行度指數來看,python同時也是最受歡迎的程式語言。Python為何有如此大的魅力呢?
  • Python代碼技巧,你值得擁有!
    第一種方式是按字典的value升序排序,第二種方式是按字典的key升序排序,第三種方式是按字典的value降序排序,和第一種方式相反,因為指定了參數reverse為True。如何將python代碼打包成獨立的二進位文件需要編譯的python代碼如下:#!/usr/bin/env python# -*- coding: utf-8 -*-print 'hello, world!'將python代碼打包成獨立的二進位文件步驟:
  • 寫出漂亮 Python 代碼的 20條準則
    在這篇文章中,我將分享自己對這些格言的理解以及我學到的一些有用的 Python 技巧。Python 具有語法簡單、代碼可讀性強和命令類似英語等特點,這讓編寫 Python 代碼比使用其他程式語言更容易、更高效。
  • 5年 Python 功力,總結了 10 個開發技巧
    )ENABLE_USER_SITE: True從輸出你可以發現,這個列的路徑會比 sys.path 更全,它包含了用戶環境的目錄。for 循環,在實際編碼中,有可能會有更層。這樣的代碼,可讀性非常的差,很多人不想這麼寫,可又沒有更好的寫法。這裡介紹一種我常用的寫法,使用 itertools 這個庫來實現更優雅易讀的代碼。
  • 在Rust 代碼中編寫 Python 是種怎樣的體驗?
    預覽如果不熟悉inline-python類庫,你可以執行以下操作:fn main() {let who = "world";let n = 5; python!{for i in range('n): print(i, "Hello", 'who)print("Goodbye") }}它允許你將Python代碼直接嵌入Rust代碼行之間,甚至直接在Python代碼中使用Rust
  • 讓Python代碼更快運行的 5 種方法
    Python很簡單易用,但大多數人使用Python都知道在處理密集型cpu工作時,它的數量級依然低於C、Java和JavaScript。但不少第三方不願贅述Python的優點,而是決定自內而外提高其性能。
  • 30個神奇的Python技巧,幫你寫出更好的代碼!
    它是最簡單的程式語言之一,可以作為你的第一門語言。如果你是一個初學者,具備 Python 的基本概念,那麼現在就是學習編寫更好代碼的最佳時機。在 Python 中,有很多技巧,可以比以前更好地改進你的代碼。本文將幫助你了解 Python 中可用的各種技巧和提示。不斷地練習,直到它內化成你編程習慣的一部分。Python 允許我們在一行中為多個變量賦值。變量可以用逗號分隔。
  • 給你Python程序構建一個優雅的終端CLI界面
    我們知道在Linux下有優雅的shell終端命令行界面,shell腳本都可以優雅用命令行的方式來運行。而且shell也再帶優化命令行參數解析的bash內部命令getopts和大多數發行版附帶的外部命令getops。Perl語言也有Getopt::XX系列模塊來實現類似功能;Golang也有flag標準庫以及更加強大的第三庫cobra。
  • 如何優雅地使用Python中的代碼注釋
    您將學習如何優雅地編寫乾淨、簡潔的注釋,以及了解何時您可能根本不需要編寫任何注釋。你還會學到:為什麼代碼注釋如此重要用Python編寫注釋的最佳實踐希望避免的注釋類型如何練習寫出更清晰明了的注釋為什麼注釋代碼如此重要注釋是任何程序的一個組成部分,它們可以以注釋塊的形式或者在代碼行中出現,來幫助闡明解釋一個複雜的函數。
  • 你想要的Python編程技巧,我都給你整理好了
    但當你寫出下述代碼,很難去反駁這種言論。列表解析在python編程中其中一個我喜歡的東西是它的列表解析這些表達式可以很容易的寫出非常簡潔的代碼,使其讀起來就像自然語言一樣你可以了解更多關於如何使用它numbers = [1,2,3,4,5,6,7]evens = [x for x in numbers if x % 2 is 0]odds
  • 讓你的代碼更「地道」:提高Python編碼水平的小技巧
    雖然程式設計師依然可以通過不同的方式實現同樣的功能,編寫出優秀的代碼,只要代碼能夠滿足預期目的就OK。編寫非慣用Python程序也沒有問題。但就像我們不斷練習英文的口音一樣,也有一些人也想讓自己的Python代碼變得更地道。本文中,我將分享自己在過去幾年中積累的一些習慣用法,希望對提高你的Python編碼水平有所幫助。
  • 八行python代碼展現程式設計師從入門到大神的八種階段
    你敢想像你從入門python代碼、網絡達人、反重力怪才、愛情自由怪、資源盜獵者、頓悟入禪、無所不能或者卷鋪跑路8個狀態只用了簡簡單單的8行代碼嗎?這八種狀態也是一個程式設計師從入門到大神(跑路)的八個階段,每個階段對應一行代碼並且可以直接運行,看看你現在已經到了哪個階段1.初學pythonprint("Hello World!")
  • Python代碼如何升級為Pythonic 代碼
    可以在 https://www.python.org/dev/peps/pep-0008/ 上查看。但是真正去仔細研究學習這些規範的朋友並不是很多,對此呢這篇文章摘選一些比較常用的代碼整潔和規範的技巧和方法,下面讓我們一起來學習吧!命名所有的程式語言都有變量、函數、類等的命名約定,以美之稱的 Python 當然更建議使用命名約定。接下來就針對類、函數、方法等等內容進行學習。
  • 乾貨 | 從 A 到 Z 的 Python 編程技巧
    一路走來,他積累了不少有用的技巧和 tips,現在優達菌就將這些技巧分享給大家。這些技巧將根據其首字母按 A-Z 的順序進行展示。Python之所以成為這麼一門受歡迎的語言一個原因是它的可讀性和表達能力非常強。Python也因此經常被調侃為「可執行的偽代碼」。不信你看:Python有一些很棒的默認數據類型,但是有時候他們並不會像你所希望的那樣發揮作用。
  • 代碼詳解:如何用Python運行高性能的數學範式?
    >對於任何以數據為中心的學科來講,其主要任務之一是使科學計算和數值計算更較迅速。那麼,在開發和學習中有哪些技巧呢?首先需要明確的是:編寫python代碼和編寫pythonic代碼之間存在很大差異。這篇文章圍繞一些最常用的數據科學操作編寫了最佳(也存在爭議的)實踐。
  • 手把手教你從零上手Python(付安裝地址、代碼)
    幸運的是,如果你能處理好代碼縮進的話,Python語法就不沒那麼難了。我在使用Java程式語言時無需考慮注意縮進問題,然而當我之後開始使用Python時在縮進上容易出錯。 因此,如何開始學習Python?由於我們更喜歡通過實踐來學習的方式,所以我們總是讓新員工從Codecademy Python課程開始。