「著者ホームページ」: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'>