@Python 程式設計師,如何最大化提升編碼效率?

2021-01-08 CSDN

作者 | Enoch CK

譯者 | 劉暢

整理 | Jane

出品 | Python大本營

【導語】無論你是一位高級的AI工程師還是學生,你都會在工作或學習過程中需要用到 Python。自 1991 年首次發布後,Python 很快就成為了程式設計師和技術人員最喜歡的語言。作為一種擁有相對簡單語法的高級解釋語言,Python 成為了大家的不二之選。 一些集成的 Python 庫也被應用在各個領域,如生物信息學(biopython),數據科學(pandas),機器學習(keras / tensorflow)甚至天文學(astropy)。儘管 Python 的執行速度比Java或其他語言慢得多,但無可否認它提高了工作效率。

(圖片來源:原文引用自 Stack Overflow)

在這篇文章中,作者總結了在 Python 編程過程 5 個有助於提高編碼效率的編程技巧。希望大家在改進代碼時,這篇文章能提供一絲靈感。

技巧一:使用單行(one-liners)簡化語句

每次看到那麼多行的條件語句的時候,是不是都覺得頭好痛? 如果簡單一些的還好說,能找出不同條件下的關係,但是複雜的簡直就是要迷失自我了。今天給大家介紹的 Python 單行功能也許能幫你解決這個困擾。例如,條件語句:

1>>> if alpha > 7:2>>> beta = 9993>>> elif alpha == 7:4>>> beta = 995>>> else:6>>> beta = 0

可以簡化為:

1>>> beta = 999if alpha > 7else (beta == 99if alpha == 7else0)

是不是很神奇! 如果仔細檢查我們寫的代碼,一定可以找到能簡化的代碼。除了條件語句之外,for 循環也可以簡化。 例如,將整數列表加倍:

1>>> lst = [1, 3, 5]2>>> doubled = [] 3>>> for num in lst:4>>> doubled.append(num*2)

可以簡化為一行:

1>>> doubled = [num * 2for num in lst]

當然,如果將所有內容都連結成一行,可能會有點麻煩。同時,還要確保你的代碼中沒有過度使用單行代碼。

技巧二:字符串快速操作

要反轉字符串,我們只需添加 ::-1 作為列表索引,就可以讓你的工作非常輕鬆。

1>>> a = "ilovepython"2>>> print a[::-1] 3nohtypevoli

同樣的技巧也可以應用於整數列表。在 Python 中,字符串操作非常簡單。 例如,如果要使用以下的預定義變量 str1、str2 和 lst3 來輸出一個句子。

1>>> str1 = "Totally"2>>> str2 = "Awesome"3>>> lst3 = ["Omg", "You", "Are"]

只需使用.join()方法和算術運算符即可創建所需的句子。

1>>> print' '.join(lst3)2Omg You Are3>>> print' '.join(lst3)+' '+str1+' '+str24Omg You Are Totally Awesome

除了字符串操作,還建議大家了解更多有關正則表達式的方法,以便更有效地搜索字符串和過濾模式。

技巧三:嵌套的列表組合

itertools 是我最喜歡的 Python 庫之一。試想一下,你的代碼中有十幾個列表,經過一些操作後,會得到一個深度嵌套的列表。 itertools 正是用來解決語法混亂的工具。

1>>> import itertools2>>> flatten = lambda x: list(itertools.chain.from_iterable(x))3>>> s = [['"', 'An', 'investment'], ['in'], ['knowledge'], ['pays'], ['the', 'best'], ['interest."', '--'], ['Benjamin'], ['Franklin']]4>>> print(' '.join(flatten(s)))5" An investment in knowledge pays the best interest." -- Benjamin Franklin

從上面的例子中可以看出,我們可以使用 .join()和 itertools 方法來組合嵌套的列表和字符串。itertools 中的 .combinations()方法可以用於從輸入迭代中返回元素的長度子序列。

技巧四:簡單的數據結構

回到技巧一,可以非常容易的使用單行程序來初始化Python中的數據結構。 Harold Cooper 使用以下代碼實現了單行樹結構:

1>>> deftree():return defaultdict(tree)

上面顯示的代碼只是定義了一個默認值為樹的字典。

1>>> reduce( (lambda r,x: r-set(range(x**2,N,x)) if (x in r) else r), range(2,N), set(range(2,N)))

Python 還擁有一個強大的庫,如 Collections,它可以幫助您解決各種現實問題,不用編寫冗長的代碼。

1>>> from collections import Counter2>>> myList = [1,1,2,3,4,5,3,2,3,4,2,1,2,3]3>>> print(Counter(myList))4Counter({2: 4, 3: 4, 1: 3, 4: 2, 5: 1})

技巧五:輕鬆列印(print)

最後分享給大家的是,我希望自己能在學習初期的時候就知道的一個技巧。 我們不需要使用 .join()和循環,就可以列印一個帶有字符串的數組。

1>>> row = ["1", "bob", "developer", "python"]2>>> print(','.join(str(x) for x in row))31,bob,developer,python

單行代碼則如下:

1>>> print(*row, sep=',')21,bob,developer,python

另一個巧妙的列印技巧是使用枚舉。 enumerate 是Python的內置函數,非常有用。 因此,不需要寫如下一個四行代碼:

1>>> iterable = ['a','b','c']2>>> c = 03>>> for item in iterable: 4>>> print c, item 5>>> c+= 160 a71 b82 c

只需兩行就可以完成同樣的工作:

1>>> for c, item in enumerate(iterable):2>>> print c, item

Python 中有成千上萬的列印技巧,比如 pprint,以後還可以再與大家進行分享。

本次內容就先為大家介紹這五個技巧。 如果你還知道其他的Python技巧,也可以留言和大家一起分享。

原文連結:https://towardsdatascience.com/five-python-tricks-you-need-to-learn-today-9dbe03c790ab

相關焦點

  • 深入淺出 + 徹底理解 Python 編碼
    上面說的 int數組會被python封裝成一個對象,即unicode對象。問題4:如何搞定?比如,如果你嘗試這樣:e.encode("ascii")由於ASCII並不能編碼 中國 這兩個字符,所以會爆出 encode error。至此,我們已經看到了兩種錯誤,decode error 和encode error,並解決了它們。問題5:如何評價python的這種字符編碼處理方法?
  • python如何編碼解碼解析json對象
    前言json是一種以鍵值對形式存在的輕量級的數據結構,和python中的字典類型具有相同的表現結構。使用 JSON 函數需要導入 json 庫:import json。在Java中我們知道json有jsonObject和jsonArray,且可以通過String、map等相互轉換,那麼在python中,json對象是如何來讀取解析的呢?python解析json對象1.json.dumpsjson.dumps用於將 Python 對象編碼成 JSON 字符串。
  • python自學 第二章 python語言基礎之語法特點(注釋、代碼縮進、編碼規範)
    上一篇講到如何安裝python,從這篇開始我們將正式踏上python開發之旅,體驗
  • python字符的編碼與解碼
    什麼是字符編碼計算機裡面是由各種電子電路組成的,它是如何識別我們的寫的字符的,比如hello ,你,我。直接識別是不可能,它只能識別 二進位的0,1字符。所有我們輸入進去的字符,最終都會被轉化成0,1這種組合在一起的一串數字。
  • 這些方法助力Python開發者提高效率
    所以如果你試圖加入程式設計師行列,或者你有點厭倦C++,Perl,Java 和其他語言,我推薦你嘗試Python。Python有很多吸引程式設計師的功能 ,它易學,面向對象,字節碼編譯,免費且開源。還有運行時檢查。完整快速的支持,可以執行各種任務的擴展。 高效的Python 在這篇文章,我想強調一些 Python 可以節約時間並最大限度地提高生產力的方面。
  • 好程式設計師Python教程分享常見的Python面試題
    好程式設計師Python教程分享常見的Python面試題,程式設計師面試難免會需要進行筆試,筆試是考驗程式設計師基礎功底的重要環節,根據很多小夥伴的面試反饋,今天總結分享了一些常見的Python面試題,想要看Python面試是不是可以順利通過,這些常見的Python面試題你應該看看。
  • Python高效編程之88條軍規(1):編碼規範、字節序列與字符串
    所以很多程式設計師就會將Python當做自己熟悉的Java、C++等語言來用。不過這些編碼方式真的是最好的選擇嗎?本系列文章將為你揭秘88種在編寫Python代碼中的規則,這些規則將會讓你Python程序更加健壯,運行效率更高。Python的PEP 8是Python官方提供了關於如何格式化Python代碼的樣式指南。
  • python基礎學習—04字符串與編碼
    定義:將信息從一種形式轉換為另外一種形式的過程叫做編碼,即信息轉換過程舉例:信息加密解密、語言翻譯1.2  計算機編碼定義:將計算機可讀信息轉換為人類可讀形式的過程叫做計算機編碼。例如:「漢字」對應的數字是0x6c49和0x5b572.4  UTF8中文名:utf8_encode簡介:Unicode碼實際上是一個字符集,它只規定了二進位與各個字符之間的對應關係,並沒有規定如何在磁碟上存儲。
  • 科普:Python編碼的前世今生
    一旦走上了編程之路,如果你不把編碼問題搞清楚,那麼它將像幽靈一般糾纏你整個職業生涯,各種靈異事件會接踵而來,揮之不去。只有充分發揮程式設計師死磕到底的精神你才有可能徹底擺脫編碼問題帶來的煩惱。我第一次遇到編碼問題是寫JavaWeb相關的項目,一串字符從瀏覽器游離到應用程式代碼中,翻江倒海沉浸到資料庫中,隨時隨地都有可能踩到編碼的地雷。
  • Python 編碼為什麼那麼蛋疼?
    作者:劉志軍,6年+Python使用經驗, 高級開發工程師,目前在網際網路醫療行業從事Web系統構架工作個人公眾號:Python
  • 編碼人員,程式設計師,開發人員和軟體工程師之間的差異
    這可能是事實,但有些人聲稱你正在與之合作的公司決定你是程式設計師還是編碼員。但是這使得它僅僅是一個職位的差異,而每個學期都有巨大的環境。我們都聽說過編碼員,程式設計師,開發人員和軟體工程師這些職位,但是你知道他們之間確切的區別嗎?許多人聲稱,這種差異取決於他們受的教育和個人取得的成就,也有人認為是他們就職的公司決定你是程式設計師還是編碼員。
  • 我的 Python 編碼規範
    /usr/bin/env python# -*- coding: utf-8 -*-"""通常這裡是關於本文檔的說明(docstring),須以半角的句號、 問號或驚嘆號結尾!解釋器聲明編碼格式聲明模塊注釋或文檔字符串模塊導入常量和全局變量聲明頂級定義(函數或類定義)執行代碼編碼格式聲明通常,編碼格式聲明是必需的。
  • 如何正確解決Python中的中文編碼問題?
    編程派微信號:codingpy作者:xianglong原文連結:http://xianglong.me/article/learn-python-1-chinese-encoding/字符串是Python中最常用的數據類型,而且很多時候你會用到一些不屬於標準ASCII字符集的字符,這時候代碼就很可能拋出UnicodeDecodeError:
  • python入門教程06-01(python語法入門之字符編碼)
    人在與計算機交流的時候,用的都是人類能讀懂的字符,如中文字符、英文字符、日文字符等毫無疑問,由人類的字符到計算機中的數字,必須經歷一個過程,計算機所識別出來的文字都是二進位的0011等等,所以此次課程講的是字符編碼的介紹和如何深刻認識字符編碼?一 引入字符串類型、文本文件的內容都是由字符組成的,但凡涉及到字符的存取,都需要考慮字符編碼的問題。
  • Python編碼規範匯總
    文章目錄編碼格式聲明縮進引號空行導入模塊命名規範編碼格式聲明通常,編碼格式聲明是必需的。如果 python 源碼文件沒有聲明編碼格式,python 解釋器會默認使用 ASCII 編碼,一旦源碼文件包含非ASCII編碼的字符,python 解釋器就會報錯。以 UTF-8 為例,以下兩種編碼格式聲明都是合乎規則的縮進統一使用 4 個空格進行縮進。絕對不要用tab, 也不要tab和空格混用。對於行連接的情況,我一般使用4空格的懸掛式縮進。
  • 【Python基礎】(6.1)字符編碼
    #階段3、python解釋器解釋執行剛剛讀入的內存的內容,開始識別python語法##2.4 總結python解釋器與文件本編輯的異同如下#1、相同點:前兩個階段二者完全一致,都是將硬碟中文件的內容讀入內存,詳解如下python解釋器是解釋執行文件內容的,因而python解釋器具備讀py文件的功能,這一點與文本編輯器一樣#2、不同點:在階段3時,針對內存中讀入的內容處理方式不同,詳解如下文本編輯器將文件內容讀入內存後,是為了顯示或者編輯,根本不去理會python的語法,而python解釋器將文件內容讀入內存後
  • 零基礎Python入門教程 - 第三節 搭建Python開發環境
    2.安裝代碼編輯器有了python執行環境了,我們還需要一款代碼編輯器寫完成python代碼,python代碼編輯工具眾多,這裡給大家推薦兩款工具,分別是Sublime Text3和PyCharm,兩款工具都是跨平臺的,即使我們以後在linux上開發python依然可以使用。
  • Python 2.x 字符編碼終極指南
    如何理解編、解碼?如何去理解編碼、解碼?舉個例子,Alice同學剛加入了機器學習這門課,想給同班的Bob同學打個招呼。但是作為人,Alice不能通過意念和Bob交流,必須通過某種方式,比如手語、聲音、文字等來表達自己的想法。
  • 給妹子講python-S01E08理清python中的字符編碼方法
    前文傳送門:給妹子講python-S01E01好用的列表給妹子講python-S01E02學會用字典給妹子講python-S01E03元組的使用給妹子講python-S01E04容器遍歷和列表解析式給妹子講python-S01E05字符串的基本用法給妹子講python-S01E06字符串用法進階給妹子講python-S01E07字符編碼歷史觀:從ASCII到Unicode【要點搶先看】1.python中編、解碼的本質是文本字符串和字節字符串的相互轉換
  • Python安全編碼指南(一)
    開發者(KaiFaX)面向開發者、程式設計師的專業平臺!