素晴らしい、これらの14の古典的なPythonコードモジュールは本当に香りがよい

今日は、30秒で学習できるコードスニペットをいくつか紹介します。これらのコードは、無限の可能性を秘め、豊富なPythonプログラミングの考え方を含み、幅広いアプリケーションを備えており、非常に簡単に学習できます。収集することを忘れないように、フォローしてください。

1.「二次元リスト」

解釈:指定された長さと幅、および初期値に基づいて2次元リストを返します。

def initialize_2d_list(w, h, val=None):
    return [[val for x in range(w)] for y in range(h)]

例:

>>> initialize_2d_list(2,2)
[[None, None], [None, None]]

>>> initialize_2d_list(2,2,0)
[[0, 0], [0, 0]]

[注]コード、データ、および技術交換の完全版は、記事の最後で入手できます。

2.関数は配列を切り取ります

解釈:関数を使用して配列の各要素に適用し、配列を2つの部分に分割します。関数が要素に適用され、戻り値がTrueの場合、要素は最初の部分にカットされます。それ以外の場合は、2番目の部分に分割されます。

def bifurcate_by(lst, fn):
    return [
      [x for x in lst if fn(x)],
      [x for x in lst if not fn(x)]
    ]

例:

>>> bifurcate_by(['beep', 'boop', 'foo', 'bar'], lambda x: x[0] == 'b')
[['beep', 'boop', 'bar'], ['foo']]

3.「交点」

解釈:関数によって2つの配列が適用された後、共通要素のの要素が最初の配列から抽出されて、新しい配列が形成されます。

def intersection_by(a, b, fn):
    _b = set(map(fn, b))
    return [item for item in a if fn(item) in _b]

例:

>>> from math import floor
>>> intersection_by([2.1, 1.2], [2.3, 3.4],floor)
[2.1]

4.最大添え字

解釈:配列内の最大値の添え字を返します。

def max_element_index(arr):
    return arr.index(max(arr))

例:

>>> max_element_index([5, 8, 9, 7, 10, 3, 0])
4

5.アレイの対称差

解釈: 2つの配列で異なる要素を見つけ、それらを組み合わせて新しい配列にします。

def symmetric_difference(a, b):
    _a, _b = set(a), set(b)
    return [item for item in a if item not in _b] + [item for item in b if item not in _a]

例:

>>> symmetric_difference([1, 2, 3], [1, 2, 4])
[3, 4]

6.“夹数”

解釈: numが数値の範囲内にある場合は、numを返します。それ以外の場合は、この範囲に最も近い境界を返します。

def clamp_number(num,a,b):
    return max(min(num, max(a,b)),min(a,b))

例:

>> clamp_number(2,3,10)
3

>> clamp_number(7,3,10)
7

>> clamp_number(124,3,10)
10

7.キーと値のマッピング

解釈:キーを使用してオブジェクトを再作成し、関数を実行して各オブジェクトのキーの値を作成します。
dict.keys()を使用して、オブジェクトのキーを反復処理し、関数を介して新しい値を生成します。

def map_values(obj, fn):
    ret = {
    
    }
    for key in obj.keys():
        ret[key] = fn(obj[key])
    return ret
>>> users = {
    
    
...   'fred': {
    
     'user': 'fred', 'age': 40 },
...   'pebbles': {
    
     'user': 'pebbles', 'age': 1 }
... }

>>> map_values(users, lambda u : u['age'])
{
    
    'fred': 40, 'pebbles': 1}

>>> map_values(users, lambda u : u['age']+1)
{
    
    'fred': 41, 'pebbles': 2}

8.ケース変換

解釈:英語の単語の最初の文字を小文字に変更します。
upper_restパラメーター:最初の文字以外の他の文字を大文字と小文字に変換するかどうかを設定します。

def decapitalize(s, upper_rest=False):
    return s[:1].lower() + (s[1:].upper() if upper_rest else s[1:])

例:

>>> decapitalize('FooBar')
'fooBar'

>>> decapitalize('FooBar', True)
'fOOBAR'

9.同じキーの合計

解釈:リスト内の各ディクショナリで同じキー値を持つオブジェクトを合計します。

def sum_by(lst, fn):
    return sum(map(fn,lst))

例:

>>> sum_by([{
    
     'n': 4 }, {
    
     'n': 2 }, {
    
     'n': 8 }], lambda v : v['n'])
14

10.発生数を見つけるための1行のコード

解釈:リスト内の数字の出現回数の合計を求めます。

def count_occurrences(lst, val):
    return len([x for x in lst if x == val and type(x) == type(val)])

例:

>>> count_occurrences([1, 1, 2, 1, 2, 3], 1)
3

11.アレイの再グループ化

目的のサイズに従ってリストを細分化します。

写真

効果は次のとおりです。

chunk([1,2,3,4,5],2)
# [[1,2],[3,4],5]

代わりに、mapの2番目のパラメーターはリストであり、mapはリスト内の各要素を使用して最初のパラメーターの関数関数を呼び出し、各関数関数の戻り値を含む新しいリストを返します。

12.配列する番号

同じことは、整数を配列に分割するマップの適用についてです。

def digitize(n):
    return list(map(int, str(n)))

効果は次のとおりです。

digitize(123)
# [1, 2, 3]

整数nを文字列に変換した後、文字列を自動的にシリアル化して分割し、最後に要素をマップの最初のパラメーターに適用して整数に変換し、それを返します。

13.非再帰的フィボナッチ

フィボナッチ数列を思い出してください。最初の2つの数値の合計は、0、1、1、2、3、5、8、13などの3番目の数値の値です。

このアルゴリズムを実装するために再帰を使用する場合、効率は非常に低く、非再帰的な方法を使用して実装します。

写真

効果は次のとおりです。

fibonacci(7)
# [0, 1, 1, 2, 3, 5, 8, 13]

これは非常に単純に見えますが、考えを変える必要があります。

14.アンダースコア文字列

一様変数名または文字列形式をバッチ処理します。

写真

効果は次のとおりです。

snake('camelCase')# 'camel_case'

snake('some text')# 'some_text'

snake('some-mixed_string With spaces_underscores-and-hyphens')# 'some_mixed_string_with_spaces_underscores_and_hyphens'

snake('AllThe-small Things')# "all_the_small_things"

re.subは、文字列内の一致を置き換えるために使用されます。これは実際には「マトリョーシカ」の使用法であり、最初は理解しにくいかもしれませんが、ゆっくりと理解する必要があります。

最初の置換は、s文字列の'-'を''に置き換えることです。

2番目の置換は、最初に置換された文字列の代わりに、「([AZ] +)」正規表現に準拠する文字セグメント(すべて大文字の単語)をr'\ 1'に置き換えます。つまり、各単語をスペースで区切ります。

3番目の置換は、2番目の置換後の文字列、「([AZ] [az] +)」正規表現に準拠する文字セグメント(つまり、最初の文字は大文字で、他の文字は小文字)です。 r'\ 1'で置き換え、単語をスペースで区切ります。

おすすめ記事

テクノロジーエクスチェンジ

転載、収集、いいね、サポートへようこそ!

ここに画像の説明を挿入

現在、 2,000人以上のメンバーで構成される技術交流グループが開設されています。追加する際の最良のコメント方法は、ソース+関心の方向性です。これは、志を同じくする友人を見つけるのに便利です。

  • 方法1.次の画像をWeChatに送信し、長押しして識別し、バックグラウンドで返信します。グループを追加します。
  • 方法②、マイクロ信号を追加:dkl88191、注:CSDNから
  • 方法③、WeChat検索パブリックアカウント:Python学習とデータマイニング、バックグラウンド応答:グループを追加

長押しフォロー

おすすめ

転載: blog.csdn.net/weixin_38037405/article/details/124140791