、コレクションモジュール
1、他のデータ・タイプ
カウンター、両端キュー、defaultdict、namedtupleとOrderedDict:上の組み込みデータ型(文字列、辞書、リスト、タプル、セット)に基づき、コレクションモジュールは、追加データのいくつかのタイプを提供します。
2、namedtuple(名前付きタプル)
①、器具名タプルは座標点を表します
コレクションからnamedtupleインポート ポイント= namedtuple( 'ポイント'、[ 'X'、 'Y']) P =ポイント(1、2) 印刷(P) #输出 点(x = 1、Y = 2)
情報②、都市の道具名タプルレコード
インポートnamedtupleコレクション シティnamedtuple =(「市」、「名前国人口の座標」) #最初の2番目のフィールドは、各クラスの名前で、クラス名です。後者は、文字列からなる反復数のオブジェクト、または離れたスペースからなるフィールド名で区切られた文字列であってもよい 東京シティ=(「東京」、「JP」、36.933(35.689722,139.691667)) 印刷(東京都) #出力 市は(名前= '東京'、国が= 'JP'、人口= 36.933は、座標=(35.689722、139.691667))
③、フォーマット:namedtuple( '名前'、[プロパティリスト])
図3に示すように、両端キュー(両端キュー)
①、データ記憶装置のリストを使用する場合、すばやくインデックスで要素にアクセスするが、リストは線形メモリであるので、要素を挿入および除去する、非常に遅く、ときに大量のデータ、効率が非常に低い挿入及び欠失です。キューとスタックのための双方向リストの効率的な挿入および削除を達成するために両端キュー。
あなたは頭の要素を追加または削除することは非常に効率的にできるように②、APPEND()とポップのリストを達成するためにqequeほかは()、それはまた、appendleft()とpopleftを()をサポートしています。
コレクションから両端キューインポート Q =両端キュー([ 'A'、 'B'、 'C']) q.pop() q.append( 'X') q.popleftを() q.appendleft( 'Y') 、印刷( Q) #输出 両端キュー([ 'Y'、 'B'、 'X'])
③は、両端キューが挿入()メソッドをサポートし、補間がどの位置にあってもよいです
コレクションから両端キューインポート Q =両端キュー([ 'A'、 'B'、 'C']) q.insert(1、 'X') プリント(Q) #输出 両端キュー([ 'A'、 'X'を、 ' B」、 'C'])
4、OrderedDict(順序付きリスト)
辞書を使用する場合は、キーはdictの繰り返しを行うに際に、故障している、我々はあなたが注文キーを保持したい場合は、あなたが使用することができ、注文キーを決定することはできませんOrderedDict
コレクションをインポートOrderedDict D = dictの([( 'A' ,. 1)、( 'B'、2)、( 'C' ,. 3)]) プリント(D) OD = OrderedDict([( 'A' ,. 1) ( 'B'、2)、( 'C' ,. 3)]) プリント(OD) #1 python2結果 >>> D { 'A' :. 1、 'C' :. 3、 'B':2} > OD >> OrderedDict([( 'A' ,. 1)、( 'B'、2)、( 'C' ,. 3)])# のpython3結果 >>> D { 'A' :. 1、 'B': 2、 'C':3}。 >>> OD OrderedDict([( '' ,. 1)、( 'B'、2)、( 'C' ,. 3)]) 最適化のpython3リストに#、彼はそのよう秩序あるように思われます
5、defaultdict(デフォルト値の辞書)
辞書に記憶された第1の鍵66より大きい全ての値①、以下の値[11、22、33、44、55、66、77、88、99、90]は、66に格納された値よりも小さくなります第二のキー値
#原生字典解决方案 値= [11、22、33,44,55,66,77,88,99,90] my_dict = {} 値の値は: 場合、値> 66: my_dictは.__ __( 'K1'が含まれている場合): my_dict [ 'K1'])(値を追加します。 それ以外: my_dict [ 'K1'] = [値] 他を: my_dictは.__ __( 'K2')を含んでいる場合: 。my_dict [ 'K2'](値を追加) 他に: my_dict [ 'K2'] = [値] プリント(my_dict) #输出 { 'K2':[11、22、33、44、55、66]、 'K1':[77、88、99、90]} # defaultdict解决方案 コレクションからインポートdefaultdictの 値= [11、22、33,44,55,66,77,88,99、90] 90] my_dict = defaultdict(リスト) の値の値で: 場合、値> 66: my_dict [ 'K1'](値)に追加します。 他: my_dict [ 'K2']付加(値)。 プリント(my_dict) #输出 defaultdict(<クラスのリスト'>、{ 'K2':[11、22、33、44、55、66]、 'K1':[77、88、99、90]})
参照キーが存在しない場合は②、KeyError例外をスローし、辞書を使用しています。あなたはキーが存在しない、デフォルト値を返したい場合は、defaultdictを使用することができます
コレクションをインポートdefaultdictのから :DD = defaultdict( 'N / A'ラムダ) DD [ 'KEY1'] = 'ABC' プリント(DD [ 'KEY1']) プリント(DD [ 'KEY2']) #出力 ABC N / A あなたはキーが存在しない設定すると、キー#キーの存在の戻り値は、デフォルト値に戻します
6、カウンタ(カウント)
カウンタオブジェクトクラスが発生回数を追跡するために使用され、彼は、そのカウント値として、辞書メモリのキーを形成するキーとして前記要素に順序付けられていないタイプの容器です。カウント値が(0と負の数を含む)の任意の整数であってもよいです。カウンターのクラスや他の言語のバッグやマルチセットに非常に似ています。
コレクションからカウンタインポート C =カウンター( 'abcdeabcdabcaba') プリント(C) 位输出 カウンタ({ '':5 'B':4 'C':3、 'D':2、 'E' 1 })
第二に、時間モジュール
図1は、3つの方法の時間を表します
①、タイムスタンプ(タイムスタンプ):表現は1970年1月から午後12時00分00秒1秒でプレスをオフセットされます。
②、フォーマットされた時間文字列(フォーマットストリング):1999年12月6日
③、タプル(なstruct_time):9つの要素のなstruct_timeタプルの合計(年、月、日、時、分、秒、年の最初の週では、今年、などの日)
2、インポート時間インポート時間モジュール
3、time.time()は、タイムスタンプを返します。
4、時間文字列
インポート時間 プリント(time.strftime( "%Y-%M-%D%X")) プリント(time.strftime( "%Y-%M-%D%H-%M-%S")) #输出 2019年7月18日22時12分55秒 2019年7月18日22-12-55
図5に示すように、時間タプル:なstruct_timeする現在のタイムゾーンにタイムスタンプをlocaltimeの
インポート時間 プリント(time.localtime()) #输出 time.struct_time(tm_yearが= 2019、tm_mon = 7、tm_mday = 18、tm_hour = 22、tm_min = 21、のtm_sec = 22、tm_wdayコンポーネント= 3、tm_yday = 199、tm_isdstが= 0)
図6に示すように、コンピュータは、時間のタイムスタンプを識別することができる、時間列は、1つの時間を読み取ることができるであるタプルは、時間を操作するために使用され
図7に示すように、複数のフォーマット間の変換
8、datatimeモジュール
日時インポート #カスタム日付 RES = datetime.date(2019、7、15) 印刷(RES)#2019年7月15日 #得る現地時間 #日 now_date = datetime.date.today() 印刷(now_date)# 2019年7月1日 、年、月、日、時間# now_time = datetime.datetime.today() 印刷(now_time)#2019年7月1日17:46:08.214170 #かどうか、日付、年、月、日、時間またはオブジェクトあなたは対象のデータを取得するには、次のメソッドを呼び出すことができます 例えばする、#のDateTimeオブジェクトを (now_time.year)#取得年2019印刷 #月7取得します印刷(now_time.month) 印刷(now_time.day)日#1へのアクセス を印刷(now_time.weekdayを( ))#0月曜日手段(平日週0-6)週を取得 プリント(now_time.isoweekday())#週(平日1-7週間)を取得1月曜日前記 #1はtimedeltaオブジェクト #は時間で算術演算を実行することができる インポート日時 #ローカルの日付の日付を取得 = datetime.date.today tday() #は動作時間を定義する日= 7オブジェクトが別の時間に加算または7:00 7日減らすことができ、すなわち TDELTA = datetime.timedelta(日= 7) #印刷今日の日付の 印刷を(「今日日付:{} '形式(tday) )#2019年7月1日。 7日#印刷後の日付 プリント('今日から7日間押し戻さ:. {}「形式(tday + tdelta))#2019から07 -08 #概要:対象と日付はtimedeltaとの関係
三、ランダムモジュール
1、いくつかの方法
印刷(random.randint(1,6)) #は、包括あって、あなたが提供する範囲内のランダムな整数を取る 印刷(はrandom.Random()) 0-1との間に#ランダムに浮動小数点数 を印刷(random.choiceを([1、2、3、4、5、6])) #波数ランダム要素のリストから のRES = [1、2、3、4、5、6] random.shuffle(RES) プリント(RES) #改造
2、ランダムコード
''「」 インポートランダム 「「」 ランダムなnビットコード 大文字、小文字、数字、各数は限定されるものではなく 、ユーザがいくつかは、いくつかの生成生成させたい関数としてパッケージ 「」」 GET_CODE DEF(N): コード= '' の範囲内のiについて(N):# ランダム大文字、小文字、数字を生成 upper_str = CHR(random.randint(65、90)) lower_str = CHR(random.randint( 97、122)) random_int = STR(random.randint(0 ,. 9)) 上記の3つの中から#がランダムビットのランダム符号選択 (符号+ = random.choiceを[upper_str、 lower_str、random_int]) コードリターン RES = GET_CODE(4) プリント(RES)
四、osモジュール
1、OSオペレーティング・システム及びモジュールは、モジュールの扱っています
OSのインポート BASE_DIR = os.path.dirname(__ FILE__) MOVIE_DIR = os.path.join(BASE_DIR、「先生の作品) movie_list = os.listdir(MOVIE_DIR) :しばらく真の 列挙(movie_list、1で私のために、J ): 印刷(I、J) の選択が入力を=( 'あなたは、ああ(今日のホットな検索誰見たい:タンク先生)>>>:')ストリップ()。 choice.isdigit()IF:#は、ユーザーの入力かどうかを決定します純粋にデジタルである = INT(選択)#intを選択合格 範囲の選択(1、LEN場合 (movie_list)+1):#は、 の範囲内のリスト内の要素の数かどうかを決定 #は、ユーザがファイル名を見たい得る TARGET_FILEを= movie_list [-Choice 1] #スプライスファイルの絶対パス TARGET_PATH = os.path.join(MOVIE_DIR、TARGET_FILE) を開くと(TARGET_PATH、 'R&LT'、エンコード= 'UTF-8')、F AS: 印刷(f.read()) os.mkdir( 'タンク教師の選択')#は、自動的にフォルダを作成します 印刷(os.path.exists(r'D:\ Pythonのプロジェクト\ day16の\ RION教師の選択「))#は、ファイルが存在するかどうかを確認 :\ Pythonプロジェクト\ day16 \教師(r'Dを印刷(os.path.existsを\タンクの先生が.txtの作品「))#は、ファイルが存在するかどうかを判断 プリント(os.path.isfile(r'D:\ Pythonプロジェクト\ day16の\タンク教師の選択」))#は、ファイルフォルダかどうかを判断することはできません 印刷(os.path.isfile(r'D:\ Pythonプロジェクト\ \タンク教師.txtは「働くday16の\教師))#は、ファイルフォルダかどうかを判断することはできません os.rmdir(r'D:\ Pythonプロジェクト\ day16 \教師の仕事')#のみ空のフォルダを削除することができます 印刷(os.getcwd()) を印刷(os.chdir(r'D:\ Pythonプロジェクト\教師の仕事' \ day16))#は現在の場所を切り替えますディレクトリ を印刷(os.getcwd()) #は、ファイルサイズの取得 プリント(os.path.getsizeを(r'D:\ Pythonのプロジェクト\ \タンク教師.TXT「)働くday16の\教師)サイズで#バイトを 開いて(r'D:\ Pythonプロジェクト\ \タンク先生の作品day16の\教師の.txt 'エンコーディングが=' UTF-8「)F AS: 印刷(LEN(f.read()))
五、SYSモジュール
SYSインポート 環境変数のシステムへのパスを追加するには#1 sys.path.append()# #印刷(はsys.platform) #印刷(ここで、sys.version)#のPythonインタプリタ版 印刷(sys.argvの)#コマンドラインブートファイルは、の身元を確認するために行うことができます :IF LEN(sys.argvの)<= 1 印刷(「ユーザ名とパスワードを入力してください」) 他: ユーザ名= sys.argvの[1] パスワード= sys.argvのを[2] ユーザ名IF = =「ジェイソン」とパスワード==「123」: 印刷(「ようこそ」) この現在の文書・ロジック・コードPY# 他に: 印刷(「ユーザーは、現在のファイルを実行するために存在していません」)
六、シーケンシングモジュール
「」 " シリアル化 配列:文字列 の配列:中に他のデータ型に文字列を変換する データ列がファイルに書き込まれなければならないが、 データ伝送ネットワークは、バイナリでなければならないベース :D = {『『名称』ジェイソン』} 辞書 STR(D) の配列:中に文字列に変換されたデータの他のタイプの デシリアライズ:文字列は、他のデータ型に変換 JSONモジュール(******) すべての言語は、JSON形式のサポート ほとんどサポートしないデータ型を(リストに変換)整数タプルブールリスト文字列の辞書 pickleモジュール(****)が 唯一のPythonをサポート Pythonはすべてのデータタイプをサポート 「」「 インポートJSONは 」「」 ダンプ:データ転送の他の種類のシーケンスをフォーマットされた文字列のJSONへの 他のデータ型に変換する逆シリアル化JSON文字列形式:ロード ダンプロード 「」「 :D = {」「」ジェイソン「名前} 印刷(D) RES = JSONを。ダンプ(d)の#のJSON形式の文字列は二重引用符>>>なければなりません: '{ "名": "ジェイソン"}' プリント(RES、タイプ(RES))ユーザー情報」、 'W'、エンコード= 'UTF-8')、Fとして: json_str = json.dumps(D)タイプ(RES)) RES1 = json.loads(RES) プリント(RES1、タイプ(RES1)) D = { "名前": "ジェイソン"} 開くとともにF AS( 'のUserInfo'、 'W'、エンコード= 'UTF-8'): json.dump(D、F) #文字列と、自動的にファイルに書き込まインストール :オープンと( 'のUserInfo'、 'R&LT'、エンコード= 'UTF-8')、F AS RES = json.load(F) 印刷(RES、タイプ(RES)) を開くと( 'のUserInfo'、 'W'、エンコード= 'UTF-8')、F AS: json.dump(D、F)#文字列と自動的にファイルに書き込まれるインストール json.dump(D、F)#文字列と手段自動的にファイルに書き込ま 開くと( 'のUserInfo'、 'R&LT'、エンコード= 'UTF-8')、F AS: RES1 = json.load(F)は、複数#することができないデシリアライズ RES2 = json.load(F) プリント(RES1、タイプ(RES1)) プリント(RES2、タイプ(RES2)) オープン( 'のUserInfo'、 'W'、エンコード= 'とUTF-8 ')、Fとして: json_str1 = json.dumps(D) f.write(' %のS \ n '%のjson_str) f.write( '%S \ N-' json_str1%) を開くとともにF AS( 'のUserInfo'、 'R&LT'、エンコード= 'UTF-8'): ラインFにするため: RESの= json.loads(ライン) プリント( RES、タイプ(RES)) T =(1,2,3,4) プリント(json.dumps(T)) D1 = { '名前': '朱Zhijian'} 印刷(json.dumps(D1、ensure_ascii =偽) ) ピクルスは ピクルスインポート D = { '名前': 'ジェイソン'} RES = pickle.dumpsを(D)#オブジェクトを直接バイナリに変換 )pickle.dumps(D(プリント) RES1 = pickle.loads(RES) プリント(RES1 、タイプ(RES1)) 「」「 ファイルオープンモードピクルスとファイルの操作がパターンBでなければならないとき 「」」 開く(「userinfo_1を」、F AS「WB」): pickle.dump(D、F) Fとしてオープン( 'userinfo_1'、 'RB')を有します。 RES = pickle.load(F) 印刷(RES、タイプ(RES))
七、サブプロセスモジュール
「」 " あなたは、このコンピュータネットワークを介して接続1.ユーザー プログラムをコンピュータれているネットワークに基づいたコマンドに対応するユーザ入力2. 3がサブプロセスのユーザコマンドを実行するためのユーザコマンドを取得 4。ネットワークの結果に基づいて、ユーザーに送信され 、遠隔操作を操作するユーザがこのコンピュータを実現するように 「」 " しばらく真: CMD = INPUT(『cmdは>>>:』)。ストリップ() インポートサブプロセス OBJ = subprocess.Popenを( CMD、シェル= Trueを、subprocess.PIPE = STDOUT、標準エラー= subprocess.PIPE) #プリント(OBJ) プリント( 'コマンドは、正しい結果を返すSTDOUT'、obj.stdout.read()。( 'GBK')を復号) 印刷( 'コマンドはエラーメッセージ標準エラーを返す'、obj.stderr.read()。デコード ( 'GBK'))