いくつかの人気のあるモジュール
1、sys
モジュールsysを使用すると、Pythonインタープリターに密接に関連する変数や関数にアクセスできます。
関数/変数 | 説明 |
---|---|
argv | スクリプト名を含むコマンドラインパラメータ |
exit([arg]) | 現在のプログラムを終了します。オプションのパラメーターを使用して、戻り値またはエラーメッセージを指定できます。 |
モジュール | モジュール名をロードされたモジュールにマップする辞書 |
道 | モジュールを検索するディレクトリの名前を含むリスト |
プラットホーム | sunos5やwin32などのプラットフォーム識別子 |
stdin | 標準入力ストリーム-ファイルに似たオブジェクト |
stdout | 標準出力ストリーム-ファイルに似たオブジェクト |
stderr | 標準エラーストリーム-ファイルのようなオブジェクト |
[root@li python]# vim reverseargs.py
[root@li python]# cat reverseargs.py
import sys
args = sys.argv[1:]
args.reverse()
print(' '.join(args))
[root@li python]# python3 reverseargs.py this is a test
test a is this
2
モジュールosを使用すると、複数のオペレーティングシステムサービスにアクセスできます。
関数/変数 | 説明 |
---|---|
約 | 環境変数のマップが含まれています |
システム(コマンド) | サブシェルでオペレーティングシステムコマンドを実行する |
9月 | パスで使用されるセパレータ |
パスセップ | 異なるパスを分離するセパレータ |
linesep | 行区切り文字( '\ n'、 '\ r'または '\ r \ n') |
urandom(n) | 強力に暗号化されたランダムデータのnバイトを返します |
3、ファイル入力
fileinputモジュールを使用すると、一連のテキストファイルのすべての行を簡単に反復できます。
関数/変数 | 説明 |
---|---|
input([files [、inplace [、backup]]]) | 複数の入力ストリームの行を反復処理するのに役立ちます |
ファイル名() | 現在のファイルの名前を返します |
lineno() | 現在の行番号(累積)を返す |
filelineno() | 現在のファイルの行番号を返します |
isfirstline() | 現在の行がファイルの最初の行かどうかを確認します |
isstdin() | 最後の行がsys.stdinからのものかどうかを確認します |
nextfile() | 現在のファイルを閉じて次のファイルに移動します |
閉じる() | シーケンスを閉じる |
4.セット、ヒープ、デック
4.1、コレクション
コレクションは、組み込みクラスセットによって実装されます。つまり、クラスをインポートせずに直接コレクションを作成できます。
>>> set(range(10))
{
0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
シーケンス(または他の反復可能なオブジェクト)を使用してコレクションを作成したり、中括弧を使用して明示的に指定したりできます。中括弧を使用して空のセットを作成することはできません。これにより、辞書が作成されます。
>>> type({
})
<class 'dict'>
コレクションは主にメンバーシップチェックに使用されるため、重複する要素は無視されます。
>>> {
0,0,1,2,1,4,5,5,5,4}
{
0, 1, 2, 4, 5}
辞書のように、コレクション内の要素の順序は異なります。
メンバーシップのチェックに加えて、ユニオンやインターセクションなどのさまざまな標準セット操作を実行できます。
>>> a = {
1,2,3}
>>> b = {
2,3,4}
>>> a.union(b)
{
1, 2, 3, 4}
>>> a | b
{
1, 2, 3, 4}
他にもいくつかのメソッドと演算子があります:
>>> c = a & b
>>> c.issubset(a)
True
>>> c <= a
True
>>> c.issuperset(a)
False
>>> c >= a
False
>>> a.intersection(b)
{
2, 3}
>>> a & b
{
2, 3}
>>> a.difference(b)
{
1}
>>> a - b
{
1}
>>> a ^ b
{
1, 4}
>>> a.copy()
{
1, 2, 3}
>>> a.copy() is a
False
セットは変更可能なため、辞書キーとして使用できません。別の問題は、コレクションに不変の値しか含めることができないため、他のコレクションを含めることができないことです。
>>> a = set()
>>> b = set()
>>> a.add(b)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'set'
コンストラクタforzensetは、指定されたセットのコピーを作成します。コレクションを別のコレクションのメンバーとして、または辞書のキーとして使用する必要がある場合に役立ちます。
4.2、ヒープ
これは、オブジェクトを任意の順序で追加し、いつでも最小の要素を検索(および削除)できる優先キューです。モジュールの名前はheapqです。
関数/変数 | 説明 |
---|---|
heappush(ヒープ、x) | xをヒープにプッシュする |
heappop(ヒープ) | ヒープから最小の要素をポップします |
heapify(ヒープ) | リストにヒープ特性を持たせます |
heapreolace(heap、x) | 最小の要素をポップし、xをヒープにプッシュします |
最大(nトリップ) | iterの最大のn個の要素を返します |
nsmallest(n、iter) | iterの最小のn個の要素を返します |
>>> from heapq import *
>>> from random import shuffle
>>> data = list(range(10))
>>> shuffle(data)
>>> heap = []
>>> for n in data:
... heappush(heap,n)
...
>>> heap
[0, 1, 6, 2, 4, 7, 9, 8, 3, 5]
>>> heappush(heap,0.5)
>>> heap
[0, 0.5, 6, 2, 1, 7, 9, 8, 3, 5, 4]
これは、データ構造の一番上のヒープです。つまり、特定の順序で配列されています。
>>> heappop(heap)
0
>>> heappop(heap)
0.5
>>> heappop(heap)
1
>>> heap
[2, 3, 6, 5, 4, 7, 9, 8]
>>> heap = [5,8,0,3,6,7,9,1,4,2]
>>> heapify(heap) #就是调整堆的过程
>>> heap
[0, 1, 5, 3, 2, 7, 9, 8, 4, 6]
4.3、両端キュー
両端キューは、要素が追加された順序で要素を削除する必要がある場合に役立ちます。
>>> from collections import deque
>>> q = deque(range(5))
>>> q.append(5)
>>> q.appendleft(6)
>>> q
deque([6, 0, 1, 2, 3, 4, 5])
>>> q.pop()
5
>>> q.popleft()
6
>>> q.rotate(3)
>>> q
deque([2, 3, 4, 0, 1])
>>> q.rotate(-1)
>>> q
deque([3, 4, 0, 1, 2])
5、時間
現在の時刻、操作の日時、文字列からの読み取り時間、フォーマットされた日付を文字列形式に取得するように構成された時間モジュール。
Python日付タプルのフィールド | ||
---|---|---|
インデックス | フィールド | 値 |
0 | 年 | |
1 | 月 | 1〜12 |
2 | 日 | 0〜31 |
3 | 時間 | 0〜23 |
4 | 分 | 0〜59 |
5 | 二番目 | 0〜61 |
6 | 週間 | 0〜6、0は月曜日を表します |
7 | 儒略日 | 1〜366 |
8 | 夏の時間 | 0、1、または-1 |
関数/変数 | 説明 |
---|---|
asctime([タプル]) | 時間タプルを文字列に変換する |
ローカルタイム([秒]) | 秒を現地時間の日付タプルに変換します |
mktime(タプル) | 時間タプルを現地時間に変換 |
睡眠(秒) | スリープ(何もしない)秒秒 |
strptime(string[,format]) | 将字符串转换为时间元组 |
time() | 当前时间(从新纪元开始后的秒数) |
>>> import time
>>> time.time()
1596703340.4325356
>>> time.asctime()
'Thu Aug 6 16:42:39 2020'
6、random
模块 random 包含生成伪随机数的函数。
函数 | 说明 |
---|---|
random() | 返回一个 0~1(含)的随机数 |
getrandbits(n) | 以长整数方式返回 n 个随机地二进制数 |
uniform(a,b) | 返回一个 a~b(含)的随机实数 |
randrange([start],stop,[step]) | 从 range(start,stop,step) 中随机地选择一个数 |
choice(seq) | 从序列 seq 中随机地选择一个元素 |
shuffle(seq[,random]) | 就地打乱序列 seq |
sample(seq,n) | 从序列 seq 中随机地选择 n 个值不同的元素 |