Pythonコレクションpop()関数の詳細解説、ポップランダム削除原理

「著者ホームページ」:Shibie Sanri wyx
「著者プロフィール」: CSDN top100、Alibaba Cloud Blog Expert、Huawei Cloud Share Expert、Network Security High-quality Creator
「おすすめコラム」: Xiaobai Zero Basic 「Python 初心者からマスターまで」

Pop()はコレクション内の「要素」を「ランダムに削除」できます

文法

set.pop()

戻り値

  • 削除された要素を返す

例: 要素をランダムに削除する

set1 = {
    
    'zhangsan', 'lisi', 'wangsu'}

set1.pop()
print(set1)

出力:

{
    
    'lisi', 'zhangsan'}

疑似ソース コード (Python の組み込み関数ではソース コードは表示されず、関数の紹介のみが表示されます) から、 Pop()がコレクション内の「要素」を「削除」し、 「返す」ことがわかります。コレクションが「の場合、 KeyError が報告されます。

ここに画像の説明を挿入


1. ランダムな削除は完全にランダムではありません

Pop()は HashMap に基づいて実装されており、常にコレクション内の「最初の要素」を「削除」します。コレクションは「順序付けされていない」ため、 「ランダムに」要素を削除しているように見えます。

1.1、純粋な数値

コレクション内の要素が"純粋な数値"の場合、コレクションは要素を昇順に配置し、"最小" の値が最初にランク付けされないため、pop() を実行すると、最小の要素が削除されます。

set1 = {
    
    1, 5, 3, 9, 2}

print('删除前:', set1)
set1.pop()
print('删除后:', set1)

最初の実行出力:

删除前: {
    
    1, 2, 3, 5, 9}
删除后: {
    
    2, 3, 5, 9}

2 番目の実行出力:

删除前: {
    
    1, 2, 3, 5, 9}
删除后: {
    
    2, 3, 5, 9}

これを数回実行すると、 pop() が毎回 1 を削除することがわかります。これは、 1 が最小であり、常に最初にランク付けされるためです。


1.2、普通の文字

コレクション内の要素が"純粋な文字列"である場合、コレクションは要素の順序を保証できません。pop ()は常に最初の要素を削除するため、この状況はランダムな削除のように見えます。

set1 = {
    
    'aaa', 'bbb', 'ccc', 'ddd'}

print('删除前:', set1)
set1.pop()
print('删除后:', set1)

最初の実行出力:

删除前: {
    
    'ddd', 'bbb', 'aaa', 'ccc'}
删除后: {
    
    'bbb', 'aaa', 'ccc'}

2 番目の実行出力:

删除前: {
    
    'ddd', 'aaa', 'ccc', 'bbb'}
删除后: {
    
    'aaa', 'ccc', 'bbb'}

複数回実行すると、各コレクション内の要素の順序がランダムであることがわかり、pop() はコレクション内の最初の要素も「ランダムに」削除します。


1.3 混合状況

コレクション内の要素に文字列、整数、タプルなどの「混合」の組み合わせがある場合、要素の順序はランダムになります。もちろん、pop() は依然として最初の要素を頑固に削除します。

set1 = {
    
    (1, 2), (5, 6), (9, 8), (3, 4), 'aaa', 1, 2}

print('删除前:', set1)
set1.pop()
print('删除后:', set1)

出力:

删除前: {
    
    'aaa', 1, 2, (1, 2), (3, 4), (9, 8), (5, 6)}
删除后: {
    
    1, 2, (1, 2), (3, 4), (9, 8), (5, 6)}

2. 空のコレクション

Pop()を使用するコレクションには要素が必要であり、 「空のコレクション」はKeyError を報告します。

set2 = set()

set2.pop()

出力:

ここに画像の説明を挿入

この形式の「空のコレクション」もエラーを報告します

set1 = {
    
    }

set1.pop()

出力:

ここに画像の説明を挿入

実は、これはコレクションではなく、辞書です

set1 = {
    
    }
print(type(set1))

出力:

<class 'dict'>

おすすめ

転載: blog.csdn.net/wangyuxiang946/article/details/131840658