好用到哭!你需要立刻學會的20個Python代碼段

2021-01-07 讀芯術

全文共5195字,預計學習時長10分鐘

圖源Unsplash 攝影者Chris Ried

Python是一種非BS程式語言。設計簡單和易讀性是它廣受歡迎的兩大原因。正如Python的宗旨:美麗勝於醜陋,顯式勝於隱式。

記住一些幫助提高編碼設計的常用小訣竅是有用的。在必要時刻,這些小訣竅能夠減少你上網查Stack Overflow的麻煩。而且它們會在每日編程練習中助你一臂之力。

1. 反轉字符串

以下代碼使用Python切片操作來反轉字符串。

# Reversing a string using slicing

my_string = "ABCDE"

reversed_string = my_string[::-1]

print(reversed_string)

# Output

# EDCBA

2. 使用標題類(首字母大寫)

以下代碼可用於將字符串轉換為標題類。這是通過使用字符串類中的title()方法來完成。

my_string = "my name is chaitanya baweja"

# using the title() function of string class

new_string = my_string.title()

print(new_string)

# Output

# My Name Is Chaitanya Baweja

3. 查找字符串的唯一要素

以下代碼可用於查找字符串中所有的唯一要素。我們使用其屬性,其中一套字符串中的所有要素都是唯一的。

my_string = "aavvccccddddeee"

# converting the string to a set

temp_set = set(my_string)

# stitching set into a string using join

new_string = ''.join(temp_set)

print(new_string)

4. 輸出 n次字符串或列表

你可以對字符串或列表使用乘法(*)。如此一來,可以按照需求將它們任意倍增。

n = 3 # number of repetitions

my_string = "abcd"

my_list = [1,2,3]

print(my_string*n)

# abcdabcdabcd

print(my_list*n)

# [1,2,3,1,2,3,1,2,3]

import streamlit as st

一個有趣的用例是定義一個具有恆定值的列表,假設為零。

n = 4

my_list = [0]*n # n denotes the length of the required list

# [0, 0, 0, 0]

5. 列表解析

在其他列表的基礎上,列表解析為創建列表提供一種優雅的方式。

以下代碼通過將舊列表的每個對象乘兩次,創建一個新的列表。

# Multiplying each element in a list by 2

original_list = [1,2,3,4]

new_list = [2*x for x in original_list]

print(new_list)

# [2,4,6,8]

6. 兩個變量之間的交換值

Python可以十分簡單地交換兩個變量間的值,無需使用第三個變量。

a = 1

b = 2

a, b = b, a

print(a) # 2

print(b) # 1

7. 將字符串拆分成子字符串列表

通過使用.split()方法,可以將字符串分成子字符串列表。還可以將想拆分的分隔符作為參數傳遞。

string_1 = "My name is Chaitanya Baweja"

string_2 = "sample/ string 2"

# default separator ' '

print(string_1.split())

# ['My', 'name', 'is', 'Chaitanya', 'Baweja']

# defining separator as '/'

print(string_2.split('/'))

# ['sample', ' string 2']

8. 將字符串列表整合成單個字符串

join()方法將字符串列表整合成單個字符串。在下面的例子中,使用comma分隔符將它們分開。

list_of_strings = ['My', 'name', 'is', 'Chaitanya', 'Baweja']

# Using join with the comma separator

print(','.join(list_of_strings))

# Output

# My,name,is,Chaitanya,Baweja

9. 檢查給定字符串是否是回文(Palindrome)

反轉字符串已經在上文中討論過。因此,回文成為Python中一個簡單的程序。

my_string = "abcba"

m if my_string == my_string[::-1]:

print("palindrome")

else:

print("not palindrome")

# Output

# palindrome

10. 列表的要素頻率

有多種方式都可以完成這項任務,而我最喜歡用Python的Counter 類。Python計數器追蹤每個要素的頻率,Counter()反饋回一個字典,其中要素是鍵,頻率是值。

也使用most_common()功能來獲得列表中的most_frequent element。

# finding frequency of each element in a list

from collections import Counter

my_list = ['a','a','b','b','b','c','d','d','d','d','d']

count = Counter(my_list) # defining a counter object

print(count) # Of all elements

# Counter({'d': 5, 'b': 3, 'a': 2, 'c': 1})

print(count['b']) # of individual element

# 3

print(count.most_common(1)) # most frequent element

# [('d', 5)]

11. 查找兩個字符串是否為anagrams

Counter類的一個有趣應用是查找anagrams。

anagrams指將不同的詞或詞語的字母重新排序而構成的新詞或新詞語。

如果兩個字符串的counter對象相等,那它們就是anagrams。

From collections import Counter

str_1, str_2, str_3 = "acbde", "abced", "abcda"

cnt_1, cnt_2, cnt_3 = Counter(str_1), Counter(str_2), Counter(str_3)

if cnt_1 == cnt_2:

print('1 and 2 anagram')

if cnt_1 == cnt_3:

print('1 and 3 anagram')

12. 使用try-except-else塊

通過使用try/except塊,Python 中的錯誤處理得以輕鬆解決。在該塊添加else語句可能會有用。當try塊中無異常情況,則運行正常。

如果要運行某些程序,使用 finally,無需考慮異常情況。

a, b = 1,0

try:

print(a/b)

# exception raised when b is 0

except ZeroDivisionError:

print("division by zero")

else:

print("no exceptions raised")

finally:

print("Run this always")

13.使用列舉獲取索引和值對

以下腳本使用列舉來迭代列表中的值及其索引。

my_list = ['a', 'b', 'c', 'd', 'e']

for index, value in enumerate(my_list):

print('{0}: {1}'.format(index, value))

# 0: a

# 1: b

# 2: c

# 3: d

# 4: e

14. 檢查對象的內存使用

以下腳本可用來檢查對象的內存使用。

import sys

num = 21

print(sys.getsizeof(num))

# In Python 2, 24

# In Python 3, 28

15. 合併兩個字典

在Python 2 中,使用update()方法合併兩個字典,而Python3.5 使操作過程更簡單。

在給定腳本中,兩個字典進行合併。我們使用了第二個字典中的值,以免出現交叉的情況。

dict_1 = {'apple': 9, 'banana': 6}

dict_2 = {'banana': 4, 'orange': 8}

combined_dict = {**dict_1, **dict_2}

print(combined_dict)

# Output

# {'apple': 9, 'banana': 4, 'orange': 8}

16. 執行一段代碼所需時間

下面的代碼使用time 軟體庫計算執行一段代碼所花費的時間。

import time

start_time = time.time()

# Code to check follows

a, b = 1,2

c = a+ b

# Code to check ends

end_time = time.time()

time_taken_in_micro = (end_time- start_time)*(10**6)

print(" Time taken in micro_seconds: {0} ms").format(time_taken_in_micro)

17. 列表清單扁平化

有時你不確定列表的嵌套深度,而且只想全部要素在單個平面列表中。

可以通過以下方式獲得:

from iteration_utilities import deepflatten

# if you only have one depth nested_list, use this

def flatten(l):

return [item for sublist in l for item in sublist]

l = [[1,2,3],[3]]

print(flatten(l))

# [1, 2, 3, 3]

# if you don't know how deep the list is nested

l = [[1,2,3],[4,[5],[6,7]],[8,[9,[10]]]]

print(list(deepflatten(l, depth=3)))

# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

若有正確格式化的數組,Numpy扁平化是更佳選擇。

18. 列表取樣

通過使用random軟體庫,以下代碼從給定的列表中生成了n個隨機樣本。

import random

my_list = ['a', 'b', 'c', 'd', 'e']

num_samples = 2

samples = random.sample(my_list,num_samples)

print(samples)

# [ 'a', 'e'] this will have any 2 random values

強烈推薦使用secrets軟體庫生成用於加密的隨機樣本。

以下代碼僅限用於Python 3。

import secrets # imports secure module.

secure_random = secrets.SystemRandom() # creates a secure random object.

my_list = ['a','b','c','d','e']

num_samples = 2

samples = secure_random.sample(my_list, num_samples)

print(samples)

# [ 'e', 'd'] this will have any 2 random values

19. 數位化

以下代碼將一個整數轉換為數字列表。

num = 123456

# using map

list_of_digits = list(map(int, str(num)))

print(list_of_digits)

# [1, 2, 3, 4, 5, 6]

# using list comprehension

list_of_digits = [int(x) for x in str(num)]

print(list_of_digits)

# [1, 2, 3, 4, 5, 6]

20. 檢查唯一性

以下函數將檢查一個列表中的所有要素是否唯一。

def unique(l):

if len(l)==len(set(l)):

print("All elements are unique")

else:

print("List has duplicates")

unique([1,2,3,4])

# All elements are unique

unique([1,1,2,3])

# List has duplicates

推薦閱讀專題

留言 點讚 關注

我們一起分享AI學習與發展的乾貨

如需轉載,請後臺留言,遵守轉載規範

相關焦點

  • Python趣味打怪:60秒學會一個例子,147段代碼助你從入門到大師
    不要害怕學習的過程枯燥無味,這裡有程式設計師jackzhenguo打造的一份中文Python「糖果包」:147個代碼小樣,60秒一口,營養又好玩,從Python基礎到機器學習盡皆囊括。機器學習,包括機器學習的基礎概念和十大核心算法以及Sklearn和Kaggle實戰的小例子PyQt製作GUIFlask前端開發Python數據分析:NumPy, Pandas, Matplotlib, Plotly等教程開篇,先用82段簡單易懂的代碼,介紹了Python的基礎語法、功能。
  • 好用到哭!請記住這20段Python代碼
    記住一些幫助提高編碼設計的常用小訣竅是有用的。在必要時刻,這些小訣竅能夠減少你上網查Stack Overflow的麻煩。而且它們會在每日編程練習中助你一臂之力。my_string = "abcba"if my_string == my_string[::-1]:    print("palindrome")else:    print("not palindrome")# Output# palindrome有多種方式都可以完成這項任務,而我最喜歡用Python的Counter
  • 你必須掌握的20個python代碼,短小精悍,用處無窮
    而python編程中的一些小的技巧,運用的恰當,會讓你的程序事半功倍。以下的20個小的程序段,看似非常的簡單,但是卻非常的有技巧性,並且對個人的編程能力是一個很好的檢驗,大家應該在日常的編程中多多使用,多多練習。1.字符串的翻轉
  • 寫出漂亮 Python 代碼的 20條準則
    >實用性勝過純粹;永遠不要默默地忽視錯誤;除非明確需要這樣做;面對模稜兩可,拒絕猜測;解決問題最直接的方法應該有一種,最好只有一種;當然這是沒法一蹴而就的,除非你是荷蘭人;做也許好過不做;但不想就做還不如不做;如果方案難以描述明白,那麼一定是個糟糕的方案;如果實現容易描述
  • Python代碼可以加密碼?Python字節碼告訴你!
    ,將本文分享到朋友圈,thanks! 眾所周知,執行Python程序可以直接使用python.exe命令,如下所示:看到python直接執行了abc.py,可能很多同學認為python是解釋執行abc.py的,其實不然。如果要真是解釋執行,那效率慢的就沒法用了。實際上,Python與Java一樣,也是玩字節碼出身。
  • Python趣味打怪:147段簡單代碼完成從入門到大師
    不要害怕學習的過程枯燥無味,這裡有程式設計師jackzhenguo打造的一份中文Python「糖果包」:147個代碼小樣,60秒一口,營養又好玩,從Python基礎到機器學習盡皆囊括。機器學習,包括機器學習的基礎概念和十大核心算法以及Sklearn和Kaggle實戰的小例子PyQt製作GUIFlask前端開發Python數據分析:NumPy, Pandas, Matplotlib, Plotly等教程開篇,先用82段簡單易懂的代碼,介紹了Python的基礎語法、功能。
  • 六個步驟,封裝你最愛的Python代碼包!
    全文共7134字,預計學習時長14分鐘假設你很喜歡用同一段Python代碼,裡面有幾個相關的小型函數,或者是含有幾百行代碼的中型模塊。程式設計師可能會把它複製到不同的項目或存儲庫中,或者從特別設置的實用工具代碼文件夾中導入這段代碼。 這很正常。程式設計師在編寫代碼的過程中都會不斷積累這些個性化的小工具。
  • 好用的PYTHON IDE和代碼編輯器| TOP10推薦
    正好搜索到一篇文章比較了十大 Python 編程 IDE(集成編程環境)《BEST PYTHON IDE AND CODE EDITORS | TOP 10》。正所謂磨刀不誤砍柴工,那就來過一遍吧(儘可能的漢化了如果翻譯的不夠專業,請指正):什麼是IDE你可以簡單理解是一個可以進行編寫、調試、釋放代碼的圖形化界面(軟體)。
  • 零基礎python入門,教到你學會為止
    這是一個對初學者友好的課程,即使你之前沒有接觸過任何編程相關的知識也可以通過此課程寫出自己的代碼。2. 課程教授 Python 程式語言的使用,不管你之後是打算做網站開發、爬蟲或者數據分析,甚至是向人工智慧領域深入研究,本課程裡所涉及的內容都能派上用場,是你進一步學習的保障。3.
  • 如何用iPad運行Python代碼?
    只要你的設備上有個現代化瀏覽器(包括但不限於Google Chrome, Firefox, Safari和Microsoft Edge等)就行。IE 8.0?那個不行,趕緊升級吧!讀到這裡,你應該想明白了。因為只挑瀏覽器,不挑作業系統,所以別說你用Windows 10,你就是用iPad,都能運行代碼。
  • Python2020全新教程課程:從小白到獨立寫代碼
    Python可以說是當下最火的程式語言了之一,對於從未踏足過編程領域的萌新來說想要學會它,不是一件很容易的事,雖然網上的教程很多,百度搜索都可以搜出很多的教程,教程雖多但對於小夥伴們來說也是不知道選擇那一部分來學,缺乏一個系統的學習方法,一周有168個小時,如果每天花3個小時來做一件事的話那麼你將收穫一份碩滿的果實
  • vscode寫Python數據處理分析代碼,由安裝配置到cell交互模式
    先看看界面:重點是左邊紅框處5個小圖標,他們表示各個基礎功能,不過現在我們不需要深入了解他們此時的vscode只是一個漂亮的記事本而已,我們需要讓vscode安裝一些輔助插件:點擊左邊最後一個小圖標,這是安裝插件的地方在輸入框輸入"python"第一個出來的結果,點擊安裝,相信在幾秒內就安裝完成這插件是出自微軟,信心有保證此時你可能會注意到,vscode
  • 讓你python代碼更快的3個小技巧
    大家好!今天呢,我們來聊一聊如何加速你的 python 代碼。Python 語言的優點可以列舉出許多,語法簡單易懂、模塊豐富、應用廣泛等等。但是世界上沒有有完美的東西,python 一個明顯缺點就是運行速度慢,至少跟 C 語言沒法比。所以,不安於現狀的 Pythoner 就開發了許多工具。其中,最著名的莫過於 Cython 和 Numba。
  • 10個好用的Python集成開發環境
    Python IDE工具是每個Python工程師必須使用的開發工具,選擇正確的編輯器對Python編程效率的影響是非常大的,因此選擇合適的Python開發工具十分重要,以下是通過長期實踐發掘的好用的Python IDE,它們功能豐富,性能先進,能夠幫助開發人員快速的進行應用程式開發。1.
  • 我是如何在六個月內學會 Python 的?
    我的目標是提升自己數據科學方面的技能並將自己的職業方向往分析領域傾斜,而學習python只是我計劃的一部分。因此,我學python並不僅僅是為了學而學的。我需要python的實踐知識才能做數據分析,需要理解一系列庫才能開啟我的項目。因此我學習python時內心是抱著一個更大的藍圖的。萬事開頭難,制定好了第一份目標就等於完成了一半。
  • Python2 已終結,入手Python 3,你需要這30個技巧
    這篇教程有 30 個你會喜歡的方法。勤勞的程式設計師們,這裡有 30 條使用 Python 時實用的建議和小技巧。你可以把讀這篇文章當做工作間隙的小憩,而且我保證你學到的東西會跟工作時一樣多。1.debug 時列印出一個數據類數據類型需要你輸入提示,這樣 bug 量會大大減少下面展示了一個實用的數據類例子:想更深入的了解數據類,可以參考:https://realpython.com/python-data-classes
  • 掌握這10個python技巧,讓你代碼工作如魚得水!
    圖源:Unsplash10個Python小技巧1.用ZIP處理列表假設要合併相同長度的列表並列印結果。同樣有一種更通用的方式,即用zip()函數獲得想要的結果,代碼如下:countries= ['France', 'Germany', 'Canada']capitals = ['Paris', 'Berlin', 'Ottawa']for country, capital in zip(countries,capitals):print(country
  • 八行python代碼展現程式設計師從入門到大神的八種階段
    人生苦短,我用python。python的世界裡無處不在的簡潔和短小,往往一行代碼可以實現很多有意思功能。你敢想像你從入門python代碼、網絡達人、反重力怪才、愛情自由怪、資源盜獵者、頓悟入禪、無所不能或者卷鋪跑路8個狀態只用了簡簡單單的8行代碼嗎?
  • 在Rust 代碼中編寫 Python 是種怎樣的體驗?
    { .. }宏輕鬆地將一些Python混合到Rust代碼中。在本系列中,我將從頭展示開發此類庫的過程。()}上述單詞流不夠好。因為我們需要原始碼,而不僅僅是單詞。雖然目前還沒有成功,但是讓我們繼續吧,也許過程宏更大的靈活性能夠解決問題。由於過程宏在編譯過程中運行Rust代碼,因此它們需要使用單獨的proc-macro類庫中,這個類庫在您編譯其他內容之前已經被編譯好。
  • 你用代碼寫作業,他用Python讓櫻花綻放,美哭了!
    這確實是用代碼輸出的一束綻放的櫻花。放大細看,櫻花的花朵、花枝都是由「武漢加油」四個字組成的,每個字都是一個像素點。朱永春同學介紹說,寫代碼的時間總共大概花了三四個小時,因為平時有這樣的想法,剛好靈感閃現,就想到用這種方式來給武漢加油。