40日間の入門pythonフルスタック(day-4)
29844 ワード
きょうは待機する
python内部反復器アクセサリー
先日の質問pythonの公式ドキュメントを読む方法
python内蔵関数pythonのタイプ関数とクラス関数python文字列python正則紹介leetcode十題8つのソートアルゴリズム共通モジュールmap関数反復器とジェネレータ
文章を読んでいるうちにいいblogを見つけました.今日のこの内容の大部分はこの文章に由来しています.皆さんはこの文章に行って一つのことを勉強することができます.一般的にwhat、why、how what 反復器とジェネレータはそれぞれ何ですか 反復可能オブジェクトとは何か、生成式 とは何か以上互いにどんな違いと連絡がありますか よくあるpythonデータ型とクラス(list,dict,str,tuple)は何ですか why なぜ反復器とジェネレータ があるのかなぜ彼らを使ったのか how ジェネレータ を作成する方法反復器と反復オブジェクトを区別する をどのように判断するか examples
以下、質問への回答を順次示し、関連例を添付する.
what?反復器とは何ですか.ジェネレータですか. iteration(反復)コレクション要素へのアクセスの1つの方法 反復器は、遍歴する位置 を記憶できることを特徴とするオブジェクトである.特徴: 最初の要素から へのアクセスを開始指定された順序に従ってのみ前方にアクセスでき、後方に後退することはできない .
反復器には2つの基本的な方法が含まれています iter_(): next_():
ジェネレータは反復器の一種であり、プログラムであり、一連のアルゴリズム である.ジェネレータは、反復器 のように表現される反復器を返す関数である.はsend()およびnext()関数によってジェネレータ を復元することができる.式を生成するとジェネレータが生成されます ジェネレータは反復器を返す関数 である.ジェネレータ式は反復と解析の組合せに由来する-これは式であるが反復可能なジェネレータ である.
ジェネレータは1つのactive反復のみをサポートし、ジェネレータの反復器はジェネレータ自体 である.
IterableとIteratorすべてのジェネレータIteratorは反復可能なオブジェクトですが、Iterableは必ずしもIterator ではありません.の主な原因は、反復器が特定の機能を実行するアルゴリズムプログラム、すなわちその理論空間が無限で無限に反復可能であることを理解できることにある. それは無限のデータストリームを表し、私たちの人為的な指定によって を終了する.反復可能なオブジェクト、例えば(list,dict,str)は、私たちが与えた後、その値がこの時空内で固定される.
したがって、 は反復可能な反復オブジェクトであるが、反復器 ではない. typeタイプで と判断できます
メソッドでiterが実装されているのは反復可能なオブジェクトであり、反復器のみがnextメソッドで にアクセスできる.両者は含む関係 である.すべてのジェネレータは反復器 です.
は、iter()によって反復器 に変えることができる.は、1つのオブジェクトが反復可能オブジェクトであるか否かをisinstance()によって判断することができる .反復器の応用-フィボナッチ数列
アクセサリー what デコレーションは何ですか 装飾器は何を飾りますか 装飾器のいくつかの装飾方法 装飾器のいくつかのタイプ why なぜ装飾品 を導入するのか
how 装飾器はどのように動作しますか
オブジェクト/関数
関数とは?関数はオブジェクトであり、pythonでは万物がオブジェクトであり、関数も例外ではなく、関数もオブジェクト である.関数は、変数というオブジェクトを含むオブジェクト である.オブジェクトはクラスのインスタンス化(クラスはいくつかのオブジェクトが抽象的に定義されている) である. pythonのオブジェクトは関数のほかにリストがあり、文字列and so on オブジェクトである以上、2つの基本的な性質を有する. は、他のオブジェクト に付与することができる.は、別の関数内、すなわち変数として関数というオブジェクト内に定義することができる .
関数の実行順序はfunc_です.o(伝達を受けるパラメータfunc_fc(実パラメータ)、fcはパラメータ)->funcを呼び出すfc()実行
関数のネストと閉パッケージネスト func_outerの内部にはfuncが定義されていますinner関数 func_outerの役割ドメインにはfunc_が含まれるべきですInnerの役割ドメイン 宣言された1つの関数の内部でまた1つの関数 を宣言する
閉パッケージ が返す関数オブジェクトは、1つの関数オブジェクトだけでなく、その関数の外に作用ドメインを包むので、この関数がどこで呼び出されても、自分の外層ラップの作用ドメイン を優先的に使用することができる.用途*******? 保存関数はブレークポイント を返す.外部作用域の局所変数から異なる結果を得る .
python内蔵関数数学演算 len(object,/):コンテナ変数内の要素数(文字列内の単一文字の長さを含む) を返します. max(iterable, *[,default = obj, key = func]) ->value pow round sum abs divmod complex hash id
論理演算 all any
進変換 ascii bin oct hex
タイプ関数 bool() bytes() str() chr() ord() dict() set() list() tuple object() int() float() frozenset() range() slice() type() zip()
クラスオブジェクトおよび属性 classmethod delattr() dir() getattr() hasattr() isinstance() issubclass() property() super() callable()
python内部反復器アクセサリー
先日の質問pythonの公式ドキュメントを読む方法
python内蔵関数pythonのタイプ関数とクラス関数python文字列python正則紹介leetcode十題8つのソートアルゴリズム共通モジュールmap関数反復器とジェネレータ
文章を読んでいるうちにいいblogを見つけました.今日のこの内容の大部分はこの文章に由来しています.皆さんはこの文章に行って一つのことを勉強することができます.一般的にwhat、why、how
以下、質問への回答を順次示し、関連例を添付する.
what?
list = [1,2,2,3] #
lst_iter = iter(list) # , , iter()
print(type(lst_iter)) # lst_iter list_iterator
print(" next() :")
print(next(lst_iter))
print(next(lst_iter)) #
print(" for :")
lst_iter = iter(list)
for i in lst_iter: # for
print(i)
lst = [x*x for x in range(10)]
lst_generator =(x*x for x in range(10)) # ()
print(f' :{lst}, :{type(lst)}')
print(f' :{lst_generator}, :{type(lst_generator)}')
#
print(next(lst_generator))
print(next(lst_generator))
print(next(lst_generator))
print(next(lst_generator))
print(next(lst_generator))
print(next(lst_generator))
print(next(lst_generator))
print(next(lst_generator))
print(next(lst_generator))
# print(next(lst_generator))
try:
print(next(lst_generator))
except StopIteration:
print(' ')
# ,
finally:
print('-'*25)
lst_generator =(x*x for x in range(10)) # ()
# StopIteration
#
for x in lst_generator:
print(x) # for StopIteration
del(dict)
IterableとIterator
したがって、
#
from collections import Iterator
from collections import Iterable
#
lst = [1,2,3]
st = set(lst)
t = tuple(lst)
dct = dict([('a',1),('b',1)])
s = "Hello"
a = 10
##
print('list :{},list :{}'.format(isinstance(lst,Iterable), isinstance(lst,Iterator)))
print('set :{},list :{}'.format(isinstance(st,Iterable), isinstance(st,Iterator)))
print('tuple :{},list :{}'.format(isinstance(t,Iterable), isinstance(t,Iterator)))
print('dict :{},list :{}'.format(isinstance(dct,Iterable), isinstance(dct,Iterator)))
print('string :{},list :{}'.format(isinstance(s,Iterable), isinstance(s,Iterator)))
print(' :{},list :{}'.format(isinstance(a,Iterable), isinstance(a,Iterator)))
def fibonacci(n):
count, a, b = 0, 0, 1
while count < n:
yield b
a,b = b,a+b
count += 1
return None
h = fibonacci(10)
print(h)
print(next(h))
for x in h:
print(x)
# for
h_1 = fibonacci(6)
print(next(h_1))
print(next(h_1))
print(next(h_1))
print(next(h_1))
print(next(h_1))
print(next(h_1))
#
try:
print(next(h_1))
except StopIteration as e:
print(" :",e.value)
アクセサリー
オブジェクト/関数
関数とは?
#
def func_():
print("this's a function")
func_copy = func_
func_copy()
func()
print(func_copy is func_)
print(id(func_),id(func_copy))
#
def func_o (fc):
print('out')
fc() # fc
def func_fc():
print(' ')
func_o(func_fc)
print('*'*25)
def fc_1():
print('this is fc_1')
return fc_2
def fc_2():
print('this is fc_2')
fc_ = fc_1()
fc_()
#
# fc_() = fc_1(fc_2())
関数の実行順序はfunc_です.o(伝達を受けるパラメータfunc_fc(実パラメータ)、fcはパラメータ)->funcを呼び出すfc()実行
関数のネストと閉パッケージ
def func_outer():
a = "Here is in the func_outer but out of func_inner"
print(a)
def func_inner():
b = "Here is in the func_inner"
print(b)
c = 'but i can use out variation
' + a
print(c)
return func_inner()
f = func_outer
print(f())
# func_inner()
#
def add_out(o_num):
def add_inner(i_num):
return o_num + i_num
return add_inner
res_fc1 = add_out(12)
res_fc2 = add_out(18)
print(res_fc1(100))
print(res_fc2(100))
# 100
#
#
python内蔵関数
タイプ関数
クラスオブジェクトおよび属性