人生は短いので、私は Python を使用しています。
プログラマーの追求は、コードを書かずにできるだけ早く経済的自由を達成することです。いや、うっかり本当のことを言ってしまいました。コードは簡潔かつエレガントに書くべきでした。
Python プログラマーの追求は Python です。Python 言語の中にも、コードを簡潔、エレガント、そしてユニークなものにする「隠された」メソッドがたくさんあります。
ここでは、特にリストと辞書に関する一般的な操作をいくつかまとめて共有します。
この方法は少し興味深いもので、偶然発見しました。
>>> s = "programming is awesome" >>> print(s.title()) Programming Is Awesome
最初の方法: を使用します。
>>> a + b [1, 2, 3, 4, 5, 6]
2 番目の方法: extend キーワードを使用します。
>>> a.extend(b) >>> a [1, 2, 3, 4, 5, 6]
後の 2 つの方法は明らかにより洗練されており、お勧めします。注意すべき点は、リストが大きい場合は速度が低下するため、extend を使用することをお勧めします。
リスト要素の重複排除には set() を使用します。
>>> a = [1, 2, 3, 4, 2, 3] >>> list(set(a)) [1, 2, 3, 4]
sort() または組み込み関数sorted() を使用して、リストを並べ替えます。それらの間には 2 つの違いがあります。
# sort() >>> a = [1, 2, 3, 4, 2, 3] >>> a.sort() >>> a [1, 2, 2, 3, 3, 4] >>> >>> a = [1, 2, 3, 4, 2, 3] >>> a.sort(reverse=True) >>> a [4, 3, 3, 2, 2, 1] # sorted() >>> a = [1, 2, 3, 4, 2, 3] >>> sorted(a) [1, 2, 2, 3, 3, 4] >>> a = [1, 2, 3, 4, 2, 3] >>> sorted(a, reverse=True) [4, 3, 3, 2, 2, 1]
enumerate() 関数を使用して、インデックスと要素の値を同時に出力します。
>>> a = ['python', 'go', 'java'] >>> for i, v in enumerate(a): ... print(i, v) # output 0 python 1 go 2 java
max() 関数を使用して、リスト内で最も頻繁に出現する要素をすばやく見つけます。
>>> a = [1, 2, 3, 4, 3, 4, 5, 4, 4, 2] >>> b = max(set(a), key=a.count) >>> b 4
注意すべき点は、リスト内に 2 つの要素が同じ回数出現する場合、最初に出現する要素が返されるということです。
>>> a = [1, 2] >>> b = max(set(a), key=a.count) >>> b 1
前のコードは、最も頻繁に出現する値を示します。リスト内のすべての要素の出現数を知りたい場合は、コレクション モジュールを使用できます。
collections は、多くの機能を提供する Python の宝モジュールです。 Counter メソッドはこの要件を完全に解決できます。
>>> from collections import Counter >>> >>> a = [1, 2, 3, 4, 3, 4, 5, 4, 4, 2] >>> Counter(a) Counter({4: 4, 2: 2, 3: 2, 1: 1, 5: 1})
zip() 関数を使用して、2 つのリストを 1 つの辞書にマージします。
>>> a = ['one', 'tow', 'three'] >>> b = [1, 2, 3] >>> dict(zip(a, b)) {'one': 1, 'tow': 2, 'three': 3}
2 つのリストの共通部分、和集合、および相違点を見つけます。
# list_operate.py def main(): list_a = [1, 2, 3, 4, 5] list_b = [4, 5, 6, 7, 8] # 求交集的两种方式 res_a = [i for i in list_a if i in list_b] res_b = list(set(list_a).intersection(set(list_b))) print(f"res_a is: {res_a}") print(f"res_b is: {res_b}") # 求并集 res_c = list(set(list_a).union(set(list_b))) print(f"res_c is: {res_c}") # 求差集的两种方式,在B中但不在A中 res_d = [i for i in list_b if i not in list_a] res_e = list(set(list_b).difference(set(list_a))) print(f"res_d is: {res_d}") print(f"res_e is: {res_e}") if __name__ == '__main__': main()
# 1、创建空字典 a = {} b = dict() # 2、有初始值,从输入的便利程度来说,我更喜欢第二种 a = {'a': 1, 'b': 2, 'c': 3} b = dict(a=1, b=2, c=3) # 3、key 来自一个列表,而 value 相同, 使用 fromkeys,那是相当的优雅 keys = ['a', 'b', 'c'] value = 100 d = dict.fromkeys(keys, value) # 4、key 来自一个列表,而 value 也是一个列表,使用 zip keys = ['a', 'b', 'c'] values = [1, 2, 3] d = dict(zip(keys, values))
m = {'a': 1} n = {'b': 2, 'c': 3} # 合并,两种方式 # 1、使用 update m.update(n) # 2、使用 ** {**m, **n}
Python2でキーが存在するかどうかを判断するには、 has_key を使用できます。ただし、このメソッドは Python3 では削除されました。
もう 1 つの方法は、in キーワードを使用することです。これは、Python2 および Python3 と互換性があるだけでなく、より高速であり、強く推奨されます。
d = {'a': 1, 'b': 2} if 'a' in d: print('hello')
d = {'a': 1, 'b': 2} # 1、直接用 key 取值,但这种方式不好,如果 key 不存在会报错,推荐使用 get a = d['a'] # 2、使用 get,如果 key 不存在还可以赋默认值 a = d.get('a') c = d.get('c', 3)
d = {'a': 1, 'b': 2, 'c': 3} # 遍历 key for key in d.keys(): pass # 遍历 value for value in d.values(): pass # 遍历 key 和 value for key, value in d.items(): pass
リスト内包と辞書内包は私のお気に入りの機能で、シンプルで効率的です。 。マップとフィルターはほとんど使用できなくなりました。
l = [1, 2, 3] {n: n * n for n in l} {1: 1, 2: 4, 3: 9}
d = {'a': 1, 'b': 2, 'e': 9, 'c': 5, 'd': 7} # 按 key 排序 sorted(d.items(), key=lambda t: t[0]) # 按 key 倒序 sorted(d.items(), key=lambda t: t[0], reverse=True) # 按 value 排序 sorted(d.items(), key=lambda t: t[1])
開発プロセス中によく遭遇するもう 1 つの要件があります。それは、リストがあり、リストの要素がディクショナリであることです。次に、辞書の値で並べ替えます。リストを並べ替えます。
rree以上が私が書いた Python コードは同僚に褒められました。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。