今日は、30秒で学習できるコードスニペットをいくつか紹介します。これらのコードは、無限の可能性を秘め、豊富なPythonプログラミングの考え方を含み、幅広いアプリケーションを備えており、非常に簡単に学習できます。
1.2次元リスト
解釈:指定された長さと幅、および初期値に従って、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
多くの人がPythonを学び、どこから始めればよいのかわかりません。
多くの人がPythonを学び、基本的な文法を習得した後、どこから始めればよいかわかりません。
事例研究を行った多くの人々は、より高度な知識を学ぶ方法を知りません。
したがって、これら3つのタイプの人々のために、ビデオチュートリアル、電子書籍、およびコースのソースコードを無料で受け取ることができる優れた学習プラットフォームを提供します。
QQグループ:705933274
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.配列する番号
同じことがmapのアプリケーションであり、整数を配列に分割します。
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文字列で '' replace'- 'を使用することです。
2番目の置換は、最初の置換後の文字列の置換であり、「([AZ] +)」の正規表現を満たす文字セグメント(すべて大文字の単語)をr '\ 1'に置換します。つまり、Aスペースを使用します。各単語を区切ります。
3番目の置換は、2番目の置換後の文字列、および '([AZ] [az] +)'の正規表現に準拠する文字セグメント(つまり、最初の文字は大文字、他の文字は小文字)です。 )r '\ 1'の置換も、単語をスペースで区切ります。
自分で作成したPython学習Qグループ:705933274を引き続きお勧めします。グループはすべてPythonを学習しています。Pythonを学習したい、または学習している場合は、ぜひ参加してください。誰もがソフトウェア開発パーティーであり、乾物を共有しています。時々(Pythonソフトウェア開発にのみ関連します)、最新のPythonの高度な資料のコピーや、2021年に自分で編集したゼロベースの教育を含みます。Pythonに興味のある上級者や友人の参加へようこそ!