sorta kinda...

主にAWS関連ですが、これに限らずいろいろ勉強したことや思ったことを書いていきます。

Pythonのpopの使い方

完全に備忘録です…

ドキュメントもよく読まずにスクリプトを書いているので、基本的なことが分かってなかったようです。今回は、Pythonのリストから要素を取り出すpop()についてです。
今まではlist.pop()みたいに末尾の要素を取り出すためだけに使っていました。()の中にインデックスを指定できることを今日初めて知りましたので、確かめてみました。

簡単なリストを使えばいいのですが、手元にclient.describe_snapshotsの結果があったので、それを使いました。

#まずはリストの中身表示。2つの要素がある。
>>> snapshots
[{'Progress': '100%', 'State': 'completed', 'Encrypted': False, 'StartTime': datetime.datetime(2016, 2, 3, 7, 28, 31, tzinfo=tzutc()), 'Description': 'Created by AWS Lambda', 'VolumeId': 'vol-********', 'VolumeSize': 8, 'OwnerId': '************', 'SnapshotId': 'snap-********'}, {'Progress': '100%', 'State': 'completed', 'Encrypted': False, 'StartTime': datetime.datetime(2016, 2, 2, 7, 28, 32, tzinfo=tzutc()), 'Description': 'Created by AWS Lambda', 'VolumeId': 'vol-********', 'VolumeSize': 8, 'OwnerId': '************', 'SnapshotId': 'snap-********'}]

#最初の要素を取り出す
>>> snapshot0 = snapshots.pop(0)

#取り出した要素
>>> snapshot0
{'Progress': '100%', 'State': 'completed', 'Encrypted': False, 'StartTime': datetime.datetime(2016, 2, 3, 7, 28, 31, tzinfo=tzutc()), 'Description': 'Created by AWS Lambda', 'VolumeId': 'vol-********', 'VolumeSize': 8, 'OwnerId': '************', 'SnapshotId': 'snap-********'}

#popで取り出した後のリストの状態。1つしか要素がない。
>>> snapshots
[{'Progress': '100%', 'State': 'completed', 'Encrypted': False, 'StartTime': datetime.datetime(2016, 2, 2, 7, 28, 32, tzinfo=tzutc()), 'Description': 'Created by AWS Lambda', 'VolumeId': 'vol-********', 'VolumeSize': 8, 'OwnerId': '************', 'SnapshotId': 'snap-********'}]

#1つしかないリストからpopする
>>> snapshot1 = snapshots.pop()

#取り出した要素
>>> snapshot1
{'Progress': '100%', 'State': 'completed', 'Encrypted': False, 'StartTime': datetime.datetime(2016, 2, 2, 7, 28, 32, tzinfo=tzutc()), 'Description': 'Created by AWS Lambda', 'VolumeId': 'vol-********', 'VolumeSize': 8, 'OwnerId': '************', 'SnapshotId': 'snap-********'}

#取り出した後のリストの状態。中身は空になる。
>>> snapshots
[]

作りたいものを作るために、必要な箇所しかドキュメントを読んでないので、他にもたくさん知らないことがありそうです…
ま、日々勉強していこうと思います。