超實用的 30 段 Python 案例(二)

Python是目前最流行的語言之一,它在數據科學、機器學習、web開發、腳本編寫、自動化方面被許多人廣泛使用。

超實用的 30 段 Python 案例(二)

它的簡單和易用性造就了它如此流行的原因。

如果你正在閱讀本文,那麼你或多或少已經使用過Python或者對Python感興趣。

在本文中,我們將會介紹 30 個簡短的代碼片段,你可以在 30 秒或更短的時間裡理解和學習這些代碼片段。

超實用的 30 段 Python 案例(二)

11.逗號分隔

以下代碼段可將字符串列表轉換為單個字符串,列表中的每個元素用逗號分隔。

hobbies = ["basketball", "football", "swimming"]
print("My hobbies are: " + ", ".join(hobbies)) # My hobbies are: basketball, football, swimming

12.計算元音字母數

以下方法可計算字符串中元音字母(‘a’, ‘e’, ‘i’, ‘o’, ‘u’)的數目。

import re 
def count_vowels(str):
return len(len(re.findall(r'[aeiou]', str, re.IGNORECASE)))
count_vowels('foobar') # 3
count_vowels('gym') # 0

13.首字母恢復小寫

以下方法可用於將給定字符串的第一個字母轉換為小寫。

def decapitalize(string): 
return str[:1].lower() + str[1:]
decapitalize('FooBar') # 'fooBar'
decapitalize('FooBar') # 'fooBar'

14.平面化

以下方法使用遞歸來展開潛在的深度列表。

def spread(arg):
ret = []
for i in arg:
if isinstance(i, list):
ret.extend(i)
else:
ret.append(i)
return ret
def deep_flatten(lst):
result = []
result.extend(
spread(list(map(lambda x: deep_flatten(x) if type(x) == list else x, lst))))
return result
deep_flatten([1, [2], [[3], 4], 5]) # [1,2,3,4,5]

15.差異

該方法只保留第一個迭代器中的值,從而發現兩個迭代器之間的差異。

def difference(a, b):
set_a = set(a)
set_b = set(b)
comparison = set_a.difference(set_b)
return list(comparison)
difference([1,2,3], [1,2,4]) # [3]

16.尋找差異

下面的方法在將給定的函數應用於兩個列表的每個元素後,返回兩個列表之間的差值。

def difference_by(a, b, fn):
b = set(map(fn, b))

return [item for item in a if fn(item) not in b]
from math import floor
difference_by([2.1, 1.2], [2.3, 3.4],floor) # [1.2]
difference_by([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], lambda v : v['x']) # [ { x: 2 } ]

17.鏈式函數調用

以下方法可在一行中調用多個函數。

def add(a, b):
return a + b
def subtract(a, b):
return a - b
a, b = 4, 5
print((subtract if a > b else add)(a, b)) # 9

18.檢查重複值

以下方法使用 set() 方法僅包含唯一元素的事實來檢查列表是否具有重複值。

def has_duplicates(lst):
return len(lst) != len(set(lst))

x = [1,2,3,4,5,5]
y = [1,2,3,4,5]
has_duplicates(x) # True
has_duplicates(y) # False

19.合併兩個詞典

以下方法可用於合併兩個詞典。

def merge_two_dicts(a, b):
c = a.copy() # make a copy of a

c.update(b) # modify keys and values of a with the ones from b
return c
a = { 'x': 1, 'y': 2}
b = { 'y': 3, 'z': 4}
print(merge_two_dicts(a, b)) # {'y': 3, 'x': 1, 'z': 4}

在Python 3.5及更高版本中,你還可以執行以下操作:

def merge_dictionaries(a, b)
return {**a, **b}
a = { 'x': 1, 'y': 2}
b = { 'y': 3, 'z': 4}
print(merge_dictionaries(a, b)) # {'y': 3, 'x': 1, 'z': 4}

20.將兩個列表轉換成一個詞典

以下方法可將兩個列表轉換成一個詞典。

def to_dictionary(keys, values):
return dict(zip(keys, values))

keys = ["a", "b", "c"]
values = [2, 3, 4]
print(to_dictionary(keys, values)) # {'a': 2, 'c': 4, 'b': 3}


分享到:


相關文章: