ホームページ >バックエンド開発 >Python チュートリアル >Python プログラミングのマスター向けに書かれたデータ構造

Python プログラミングのマスター向けに書かれたデータ構造

coldplay.xixi
coldplay.xixi転載
2020-11-04 17:13:541770ブラウズ

pythonビデオチュートリアルコラムでは、Pythonプログラミングで注意すべきポイントを紹介します。

Python プログラミングのマスター向けに書かれたデータ構造

リスト、ディクショナリ、コレクションの条件に基づいてデータをフィルタリングする方法

ケース: 次のリスト データから 0 より大きい数値をフィルタリングする方法

data = [1, -1, 2, 3, 4, 7]复制代码

フィルター関数を使用します。最初のパラメーターは関数であるか、次のコードのようにラムダ式を渡すこともできます。

list(filter(lambda x: x >= 0, data))复制代码

別の解決策は、次のようにリスト生成を使用することです。この解決策は、前の解決策よりも効率的です。

print([x for x in data if x >= 0])复制代码

辞書などのデータ構造では、同様の辞書作成も使用できます。

from random import randint
d = { x: randint(60, 100) for x in range(1, 21)}
{k:v for k, v in d.items() if v >= 90}复制代码

プログラムの読みやすさを向上させるためにタプル内の各要素に名前を付ける方法

解決策: 定数を定義し、次のコードのように定数を使用してタプル内の要素にインデックスを付けます

stu = ('hao', 18, 'male', '1078244513@qq.com')
NAME = 0AGE = 1SEX = 2print(stu[SEX])复制代码

解決策: コレクション パッケージのnamedtuple 関数を使用します。この関数は新しい「クラス」の定義を返し、次のように使用されます。

from  collections import  namedtuple
Stu = namedtuple('Stu', ['name', 'age', 'sex', 'email'])# stu = Stu('hao', 18, 'male', '1078244513@qq.com')stu = Stu(name='hao', age=18, sex='male', email='1078244513@qq.com')

print(stu.email)复制代码

シーケンス内の要素の出現頻度を数える方法

問題: 次の数値リスト内の各数値の出現数を数えます

from random import randint
data = [randint(0, 20) for _ in range(30)]复制代码

計画: dict (辞書) を定義し、配列を反復処理します。

c = dict.fromkeys(data, 0)复制代码

上記のコードは、データ内のさまざまな値をキーとし、値として 0 を持つ辞書オブジェクトを生成します。

for x in data:
    c[x] += 1复制代码

解決策: コレクション パッケージの Counter 関数を使用します。

c2 = Counter(data)复制代码

この解決策では、最も多く表示される上位のいくつかを簡単に取得することもできます。

c2.most_common(3)复制代码

辞書内の値のサイズに応じて辞書内の項目を並べ替える方法

問題: 次の辞書内の値を並べ替えます

cj = {x: randint(60, 100) for x in 'xyzabc'}复制代码

スキーム:sorted 関数内 2 番目のパラメーターとして関数オブジェクトを渡すことができ、sorted は関数の戻り値に基づいて並べ替えます。

sorted(cj.items(), key=lambda item:item[1])复制代码

注: この関数は新しい辞書オブジェクトを返します

複数の辞書で共通のキー (キー) をすばやく見つけるにはどうすればよいですか?

まず、キーを紹介しましょう。 Python のサンプリング関数のサンプル。ランダム パッケージにあります。これはシーケンス タイプ パラメータと数値を受け取り、シーケンスからランダムにサンプリングされたシーケンスを返します。以下のコード。

from random import sample
sample('abcdefg', 3)复制代码

質問: 次の 3 つのコレクションの共通キーを取得する方法。

s1 = {x : randint(1, 4) for x in sample('abcdefg', randint(3, 6))}
s2 = {x : randint(1, 4) for x in sample('abcdefg', randint(3, 6))}
s3 = {x : randint(1, 4) for x in sample('abcdefg', andint(3, 6))}复制代码

このタスクは、集合の交差演算を使用して実行できます。

s1.keys() & s2.keys() & s3.keys()复制代码

辞書を整理整頓するにはどうすればよいですか?

コレクション パッケージの OrderedDict タイプは、辞書に入力された順序を維持します。

関連する無料学習の推奨事項: Python ビデオ チュートリアル

以上がPython プログラミングのマスター向けに書かれたデータ構造の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.imで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。