天天看點

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

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

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

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

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

11.逗号分隔

以下代碼段可将字元串清單轉換為單個字元串,清單中的每個元素用逗号分隔。

'''
python學習交流群:1136201545更多學習資料可以加群擷取
'''
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.将兩個清單轉換成一個詞典

以下方法可将兩個清單轉換成一個詞典。

'''
python學習交流群:1136201545更多學習資料可以加群擷取
'''
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}