pythonトレーニングDay 3エッセイ
10569 ワード
collectionsクラス
このクラスは、辞書、リスト、メタグループなどのデータ型に対するいくつかの拡張操作を含む拡張パッケージに相当します.
1、カウンタCounter
#カウンタは、文字列とリスト内の要素が表示される個数をリストし、辞書で返します.
#update()メソッドは、2つのカウンタの統計結果を加算できます.
2、秩序辞書
#秩序辞書の操作方法は標準辞書と完全に一致しており、唯一の違いは秩序辞書のkeyが順番に現れることである.これは秩序辞書があることが標準辞書に基づいてkeyをリストに保存し、列表を通じてkeyを管理しているからである.
3、デフォルト辞書
#標準辞書のvalueの値データ型は事前に定義する必要があります.そうしないと、valueに直接データを追加するのは問題があります.たとえば、次のような要件があります.
[11,22,33,44,55,66,77,88,99,90]の値セットがあり、66より大きい値はすべて辞書の最初のkeyに保存され、66より小さい値は2番目のkeyの値に保存される.
すなわち、{'k 1':66より大きく、'k 2':66より小さい
#従来の実装方法
#デフォルトの辞書で
キュー
#キューは双方向キューと一方向キューに分けられ、すべてのキューにはプロセスセキュリティがあります.
双方向キューはキューの両側で増減操作が可能で、FIFOモードです
一方のキューは一方だけが増減できるので、一方のキューはスタックです.
この部分は後で使うので、今しばらく原理を知ればいいです.
ファイルの処理
#ファイル処理の流れは一般的に
ファイルを開く->操作ファイル->ファイルを閉じる
一、ファイルを開く
f=open('ファイル名','オープンモード')
ファイルを開くモードは次のとおりです.
r、読み取り専用モード(デフォルト).
w、書き込みモードのみ.【読み取り不可、存在しない場合作成、存在する場合削除内容】
a,追加モード.【可読、存在しなければ作成、存在しなければコンテンツのみ追加】
「+」は、ファイルを同時に読み書きできることを示します.
r+、読み書き可能なファイル.【可読、書き込み可能、追加可能】
w+,意味がない
a+,同a
「U」は、読み出し時に、rrrを自動的に(rまたはr+モードと同様に使用)に変換できることを示します.
rU
r+U
"b"は処理バイナリファイルを表します(例えば:FTPはISOミラーファイルをアップロードして、linuxは無視することができて、windowsはバイナリファイルを処理する時注釈を必要とします)
rb
wb
ab
ファイルの処理
flush()
#flushメソッドでは、キャッシュ内のコンテンツをハードディスクに書き込むことができますが、このブラシはpythonのキャッシュにのみ関連しており、いつ本当にハードディスクに書くことができるのかを考慮する必要があります.システムキャッシュも見なければなりません.
read(),readline(),readlines()
#read(),readline(),readline()メソッドの違いは
read(n)は一度に質問ファイルの内容をメモリに読み込むもので、nは毎回読み込むバイト数を表し、デフォルトではすべてのデータを読み出す
readlines()は、ファイルの内容を一度にメモリに読み込み、ソースファイルの各行の内容をリストに読み込み、メタグループとして使用します.
readlinessで読み込んだ結果は
readline()は、ソースファイルの1行のみをメモリに読み込む
もう1つのxreadline()の方法は、1行ずつメモリに読み出し、1行の内容を印刷することです.を選択します.
すべての内容が印刷されていることを順番に繰り返して知ることで、大きなテキストの読み取り時にメモリが爆発することを避けることができます.
しかし今ではこの方法は廃棄され、代わりに直接forループハンドルで読み取るようになった.
next()
#次の行のデータを読み出し、なければStopIterationの異常をトリガー
seek()
#は、現在読み込まれている1行のデータの位置を調整するポインタで、デフォルトでは各行の最初のバイトが読み込みを開始します.でももし
2バイト目以降のコンテンツを読み込むにはseek()メソッドでポインタの読み取り位置を調整する必要があります
tell()
#現在のポインタの読み取り位置を返します
truncate(n)
#指定されたポインタ位置nより前の文字列のみを保持する文字列を切り取り、残りのすべてを削除し、結果をソースファイルに書き戻します.
write()
#ファイルに文字列を書き込む
writelines()
#文字列、リスト、辞書などのデータ型を一度にファイルに書き込みます.リストに文字列が必要で、辞書に書き込むとkey値だけvalue値が見えません
with
#通常のファイルを開く方法では、毎回close()メソッドを呼び出してファイルを閉じます.withメソッドでファイルを開くと自動的にファイルを閉じることができます
そしてwithメソッドで複数のファイルを同時に開くことができます
関数#カンスウ#
関数の役割はコードをモジュール化し、同じ機能のコードを繰り返し呼び出すことができるようにすることです.
関数は、次の3つに分類されます.
一、内蔵関数
内蔵関数はpython自身が統合した機能モジュールであり、よく知られている内蔵関数は以下の通りである.
help()
dir()
vars()
type()
reload(temp)
id([12])
is
------------------
cmp(2,3)
abs()
bool()
divmod(10,3),ページング
max()
min()
sum()
pow(2,11)べき乗を求める<=>>2*11
------------------
len()
all()は1つのシーケンスを受け入れて、判断して、すべての値はすべて本当で、本当を返して、さもなくば偽
any()は1つのシーケンスを受け入れて、判断して、1つの値が真である限り、真を返して、さもなくば偽
------------------
chr()
ord()
hex()
oct()
bin()
------------------
print range(10)
print xrange(10)
for i in xrange(10):
print i
for k,v in enumerate([1,2,3,4]、数値開始値を実行):
print k,v
二、カスタム関数
#python自身が提供する関数が需要を満たすことができない場合、自分で関数を定義できます.
フォーマットは次のとおりです.
1、def定義関数のキーワード
2、関数名、後日、関数名で呼び出す
3、関数宣言、自動実行しない;if__を実行するには、呼び出し後にのみ実行します.name__='main':
4、関数のパラメータ
5、関数の戻り値
戻り値:
1.戻り値が明確に定められていない場合、Noneを返す
2、戻り値はある変数に割り当てることができる
括弧の内容は関数のパラメータで、パラメータの分類は以下の通りです.
1)一般パラメータ
上記の列に示すxのように、yは定義された一般的なパラメータである.
2)デフォルトパラメータ
デフォルトパラメータとは、パラメータを定義するときにパラメータにデフォルト値を指定し、新しい値があれば新しい値を割り当てます.新しい値がない場合は、デフォルトのパラメータを使用します.ただし、1、送信しない場合は、デフォルト2、デフォルトパラメータをパラメータリストの最後に置く必要があります.
3)動的パラメータ
通常のパラメータとデフォルトのパラメータは、1つの数値または文字列しか入力できません.リストまたは辞書を入力する場合に使用します.
ダイナミックパラメータ
1、リストを入力する必要がある場合、パラメータを定義するときに*番号とargsでリストを参照する
2、辞書を渡すときは、パラメータを定義するときに、辞書を参照することを2つの*番号とkwargsで表す
3、入力されたパラメータがリストである可能性も辞書である可能性もある場合、両方の設定方式を関数に書き込む必要があります.
関数は呼び出し時に自動的に入力されたデータ型を判断します
リストにのみ入力
辞書のみ
リストも辞書もある
三、サードパーティ関数とモジュール
サードパーティ関数とモジュールは、主にインターネットからダウンロードした他の人が書いた関数をimportでインポートして使用する関数です.
本文は“霹靂豆包”のブログから出て、転載をお断りします!
このクラスは、辞書、リスト、メタグループなどのデータ型に対するいくつかの拡張操作を含む拡張パッケージに相当します.
1、カウンタCounter
#カウンタは、文字列とリスト内の要素が表示される個数をリストし、辞書で返します.
>>> import collections
>>> li=['a','b','a','c','a','b','d','d','a']
>>> st='asdasdasdasdasda'
>>> li_c=collections.Counter(li)
>>> st_c=collections.Counter(st)
>>> print li_c
Counter({'a': 4, 'b': 2, 'd': 2, 'c': 1})
>>> print st_c
Counter({'a': 6, 's': 5, 'd': 5})
# most_comm() n
>>> print li_c.most_common(3)
[('a', 4), ('b', 2), ('d', 2)]
#update()メソッドは、2つのカウンタの統計結果を加算できます.
>>> import collections
>>> li_a=['a','b','a','c','a']
>>> li_b=['b','c']
>>> li_a_co=collections.Counter(li_a)
>>> li_b_co=collections.Counter(li_b)
>>> print li_a_co
Counter({'a': 3, 'c': 1, 'b': 1})
>>> print li_b_co
Counter({'c': 1, 'b': 1})
>>> li_a_co.update(li_b_co)
>>> print li_a_co
Counter({'a': 3, 'c': 2, 'b': 2})
2、秩序辞書
#秩序辞書の操作方法は標準辞書と完全に一致しており、唯一の違いは秩序辞書のkeyが順番に現れることである.これは秩序辞書があることが標準辞書に基づいてkeyをリストに保存し、列表を通じてkeyを管理しているからである.
>>> import collections
>>> ord_dic=collections.OrderedDict()
>>> ord_dic={}
3、デフォルト辞書
#標準辞書のvalueの値データ型は事前に定義する必要があります.そうしないと、valueに直接データを追加するのは問題があります.たとえば、次のような要件があります.
[11,22,33,44,55,66,77,88,99,90]の値セットがあり、66より大きい値はすべて辞書の最初のkeyに保存され、66より小さい値は2番目のkeyの値に保存される.
すなわち、{'k 1':66より大きく、'k 2':66より小さい
#従来の実装方法
li=[11,22,33,44,55,66,77,88,99,90]
list_a=[]
list_b=[]
dic={'k1':list_a,'k2':list_b}
for i in li:
if i > 66:
dic['k1'].append(i)
else:
dic['k2'].append(i)
print dic
#デフォルトの辞書で
import collections
#coding:utf-8
li=[11, 22, 33,44,55,66,77,88,99,90]
# value
dic=collections.defaultdict(list)
for value in li:
if value>66:
dic['k1'].append(value)
else:
dic['k2'].append(value)
print dic
キュー
#キューは双方向キューと一方向キューに分けられ、すべてのキューにはプロセスセキュリティがあります.
双方向キューはキューの両側で増減操作が可能で、FIFOモードです
一方のキューは一方だけが増減できるので、一方のキューはスタックです.
この部分は後で使うので、今しばらく原理を知ればいいです.
ファイルの処理
#ファイル処理の流れは一般的に
ファイルを開く->操作ファイル->ファイルを閉じる
一、ファイルを開く
f=open('ファイル名','オープンモード')
ファイルを開くモードは次のとおりです.
r、読み取り専用モード(デフォルト).
w、書き込みモードのみ.【読み取り不可、存在しない場合作成、存在する場合削除内容】
a,追加モード.【可読、存在しなければ作成、存在しなければコンテンツのみ追加】
「+」は、ファイルを同時に読み書きできることを示します.
r+、読み書き可能なファイル.【可読、書き込み可能、追加可能】
w+,意味がない
a+,同a
「U」は、読み出し時に、rrrを自動的に(rまたはr+モードと同様に使用)に変換できることを示します.
rU
r+U
"b"は処理バイナリファイルを表します(例えば:FTPはISOミラーファイルをアップロードして、linuxは無視することができて、windowsはバイナリファイルを処理する時注釈を必要とします)
rb
wb
ab
ファイルの処理
flush()
#flushメソッドでは、キャッシュ内のコンテンツをハードディスクに書き込むことができますが、このブラシはpythonのキャッシュにのみ関連しており、いつ本当にハードディスクに書くことができるのかを考慮する必要があります.システムキャッシュも見なければなりません.
f=open('test.txt','w')
f.write('aaaa')
f.flush()
f.close
read(),readline(),readlines()
#read(),readline(),readline()メソッドの違いは
read(n)は一度に質問ファイルの内容をメモリに読み込むもので、nは毎回読み込むバイト数を表し、デフォルトではすべてのデータを読み出す
>>> f=open('test.txt','r')
>>> x=f.read()
>>> f.close()
>>> x
'1 213123123
2 123123123123
3 1231231231231
4 23123123123123
5 123123123123123
'
readlines()は、ファイルの内容を一度にメモリに読み込み、ソースファイルの各行の内容をリストに読み込み、メタグループとして使用します.
[wgw@mail ~]$ cat test.txt
1 213123123
2 123123123123
3 1231231231231
4 23123123123123
5 123123123123123
readlinessで読み込んだ結果は
f=open('test.txt','r')
x=f.readlines()
f.close()
print x
['1 213123123
', '2 123123123123
', '3 1231231231231
', '4 23123123123123
', '5 123123123123123
']
readline()は、ソースファイルの1行のみをメモリに読み込む
f=open('test.txt','r')
x=f.readline()
f.close()
print x
1 213123123
もう1つのxreadline()の方法は、1行ずつメモリに読み出し、1行の内容を印刷することです.を選択します.
すべての内容が印刷されていることを順番に繰り返して知ることで、大きなテキストの読み取り時にメモリが爆発することを避けることができます.
しかし今ではこの方法は廃棄され、代わりに直接forループハンドルで読み取るようになった.
f=open('test.txt','r')
for line in f:
print line
f.close()
1 213123123
2 123123123123
3 1231231231231
4 23123123123123
5 123123123123123
next()
#次の行のデータを読み出し、なければStopIterationの異常をトリガー
f=open('test.txt','r')
for i in range(3):
x=f.next()
print x
f.close()
1 213123123
2 123123123123
3 1231231231231
seek()
#は、現在読み込まれている1行のデータの位置を調整するポインタで、デフォルトでは各行の最初のバイトが読み込みを開始します.でももし
2バイト目以降のコンテンツを読み込むにはseek()メソッドでポインタの読み取り位置を調整する必要があります
[wgw@mail ~]$ cat test.txt
1122334455
f=open('test.txt','r')
#
f.seek(2)
x=f.readline()
print x
f.close()
[wgw@mail ~]$ python test.py
22334455
tell()
#現在のポインタの読み取り位置を返します
#!/usr/bin/env python
#-*-coding:utf8-*-
f=open('test.txt','r')
position=f.tell()
print ' :',position
f.seek(2)
position=f.tell()
print ' :',position
x=f.readline()
print x
position=f.tell()
print ' :',position
f.close()
[wgw@mail ~]$ python test.py
: 0
: 2
22334455
: 11
truncate(n)
#指定されたポインタ位置nより前の文字列のみを保持する文字列を切り取り、残りのすべてを削除し、結果をソースファイルに書き戻します.
#!/usr/bin/env python
#-*-coding:utf8-*-
# r+
f=open('test.txt','r+')
# f1
f.truncate(2)
print f.readlines()
f.close
[wgw@mail ~]$ cat test.txt
11
write()
#ファイルに文字列を書き込む
>>> f=open('test.txt','w')
>>> f.write('wgw')
>>> f.close()
[wgw@mail ~]$ cat test.txt
wgw
writelines()
#文字列、リスト、辞書などのデータ型を一度にファイルに書き込みます.リストに文字列が必要で、辞書に書き込むとkey値だけvalue値が見えません
#!/usr/bin/env python
#-*-coding:utf8-*-
test_list=['1','a','b','c','
']
test_dic={'k1':'10cc','k2':20}
f=open('test.txt','a')
f.writelines(test_list)
f.writelines(test_dic)
f.close()
[wgw@mail ~]$ cat test.txt
1abc
k2k1
with
#通常のファイルを開く方法では、毎回close()メソッドを呼び出してファイルを閉じます.withメソッドでファイルを開くと自動的にファイルを閉じることができます
with open('test.txt','a') as f:
x=f.read()
print x
そしてwithメソッドで複数のファイルを同時に開くことができます
with open('test.txt','a') as f1,open('wgw.txt','r') as f2:
関数#カンスウ#
関数の役割はコードをモジュール化し、同じ機能のコードを繰り返し呼び出すことができるようにすることです.
関数は、次の3つに分類されます.
一、内蔵関数
内蔵関数はpython自身が統合した機能モジュールであり、よく知られている内蔵関数は以下の通りである.
help()
dir()
vars()
type()
reload(temp)
id([12])
is
------------------
cmp(2,3)
abs()
bool()
divmod(10,3),ページング
max()
min()
sum()
pow(2,11)べき乗を求める<=>>2*11
------------------
len()
all()は1つのシーケンスを受け入れて、判断して、すべての値はすべて本当で、本当を返して、さもなくば偽
any()は1つのシーケンスを受け入れて、判断して、1つの値が真である限り、真を返して、さもなくば偽
------------------
chr()
ord()
hex()
oct()
bin()
------------------
print range(10)
print xrange(10)
for i in xrange(10):
print i
for k,v in enumerate([1,2,3,4]、数値開始値を実行):
print k,v
二、カスタム関数
#python自身が提供する関数が需要を満たすことができない場合、自分で関数を定義できます.
フォーマットは次のとおりです.
1、def定義関数のキーワード
2、関数名、後日、関数名で呼び出す
3、関数宣言、自動実行しない;if__を実行するには、呼び出し後にのみ実行します.name__='main':
4、関数のパラメータ
5、関数の戻り値
#!/usr/bin/env python
#coding:uft-8
def myfunc(x,y):
return x+y
w=myfunc(1,2)
3
戻り値:
1.戻り値が明確に定められていない場合、Noneを返す
2、戻り値はある変数に割り当てることができる
括弧の内容は関数のパラメータで、パラメータの分類は以下の通りです.
1)一般パラメータ
上記の列に示すxのように、yは定義された一般的なパラメータである.
2)デフォルトパラメータ
デフォルトパラメータとは、パラメータを定義するときにパラメータにデフォルト値を指定し、新しい値があれば新しい値を割り当てます.新しい値がない場合は、デフォルトのパラメータを使用します.ただし、1、送信しない場合は、デフォルト2、デフォルトパラメータをパラメータリストの最後に置く必要があります.
def myfunc(x,y=5):
return x+y
w=myfunc(1,2)
# , x 1 y
z=myfunc(1)
print w
print z
3
6
3)動的パラメータ
通常のパラメータとデフォルトのパラメータは、1つの数値または文字列しか入力できません.リストまたは辞書を入力する場合に使用します.
ダイナミックパラメータ
1、リストを入力する必要がある場合、パラメータを定義するときに*番号とargsでリストを参照する
def myfunc(*args):
print args
li=['aa','bb','cc']
myfunc(*li)
# myfunc(aa,bb,cc)
('aa', 'bb', 'cc')
2、辞書を渡すときは、パラメータを定義するときに、辞書を参照することを2つの*番号とkwargsで表す
def myfunc(**kwargs):
print kwargs
dic={'aa':11,'bb':22,'cc':33}
myfunc(**dic)
# myfunc(aa=11,bb=22,cc=33) , = k,v
{'aa': 11, 'cc': 33, 'bb': 22}
3、入力されたパラメータがリストである可能性も辞書である可能性もある場合、両方の設定方式を関数に書き込む必要があります.
関数は呼び出し時に自動的に入力されたデータ型を判断します
リストにのみ入力
def myfunc(*args,**kwargs):
print args
print kwargs
li=[77,88,99]
dic={'aa':11,'bb':22,'cc':33}
myfunc(*li)
(77, 88, 99)
{}
辞書のみ
def myfunc(*args,**kwargs):
print args
print kwargs
li=[77,88,99]
dic={'aa':11,'bb':22,'cc':33}
myfunc(**dic)
()
{'aa': 11, 'cc': 33, 'bb': 22}
リストも辞書もある
def myfunc(*args,**kwargs):
print args
print kwargs
li=[77,88,99]
dic={'aa':11,'bb':22,'cc':33}
myfunc(*li,**dic)
(77, 88, 99)
{'aa': 11, 'cc': 33, 'bb': 22}
三、サードパーティ関数とモジュール
サードパーティ関数とモジュールは、主にインターネットからダウンロードした他の人が書いた関数をimportでインポートして使用する関数です.
本文は“霹靂豆包”のブログから出て、転載をお断りします!