イテレータ
イテレータ関数は単なる呼び出しではありません
Pythonオブジェクト内のすべて(データ型)
反復可能オブジェクト:データ型からなる.__反復可能オブジェクトと呼ばれるiter__方法
数値型に加えて、すべてのデータ型はイテレート可能オブジェクトです
イテレータオブジェクト:.__ iter__と.__ next__メソッドを含むオブジェクトは、イテレータオブジェクトであります
インデックスの値に依存しない手段を提供すること:なぜオブジェクトをイテレータ必要があります
循環原理のために(forループを本質的にwhileループであるが、特定の制御可能なwhileループです)
dic_iter = dic.__iter__()
# while True:
# try:
# print(dic_iter.__next__())
# except StopIteration:
# break
反復可能オブジェクトは.__ iter__にイテレータオブジェクトを使用します
イテレータ.__ iter__はまだイテレータを使用して
反復可能オブジェクトは必ずしもイテレータオブジェクトは、オブジェクトがイテレータでなければならない反復可能
式のトリプレット
# if x > y:
# print(x)
# else:
# print(y)
表現のトリプレット - 「3つのヘッド式
print(x) if x > y else print(y) # --> 仅作了解
条件が真の条件が他の条件は、ここに行く満たされていないされている場合は、ここに行きます
リスト内包
lt = [i**2 for i in range(10)]
インポートのIterable#を入力してから繰り返しオブジェクトタイプを導出
プリント(でisinstance(範囲(10)、反復処理可能))#は、データ型かどうかを判断します
式の辞書
dic = {i:i**2 for i in range(10)}
zip()
# res = zip([1,2,3],[4,2,3,4,2,3,4,2,3],'abcadsfasdfasdf') # res是一个迭代器,__next__返回元组
# print(res.__next__()) # type:tuple
# print(res.__next__()) # type:tuple
# print(res.__next__()) # type:tuple
# # print(res.__next__()) # type:tuple
lt1 = ['a', 'b', 'c']
lt2 = [1, 2, 3]
dic = {k: v ** 2 for k, v in zip(lt1, lt2)}
print(dic)
lt = list('abc')
print(lt)
ジェネレータ式
generator 本质是一个迭代器 ---> 生成器: 本质就是迭代器,生成器就是一个自定义的迭代器
g = (i for i in range(10000000))
print(g)
# for i in g:
# print(i)
lt = [i for i in range(10000000)]
print(lt)
ジェネレータ式:古い編として、築くためにそれを使用し、メモリ空間を節約
リスト内包:卵のバスケットなどを、そのメモリ領域を占有
ジェネレータ
# 生成器:含有yield关键字的函数叫做生成器
def ge():
yield 3 # 一个yield相当于一个next; 暂停函数
yield 4
# print(ge()) # ge()得到一个生成器 --> 生成器本质是迭代器
g = ge() # 得到一个生成器
収量特性
- ポーズ機能
- 次の値により、
特性を返します
- 終了関数
- 関数を呼び出して値を取得します。
レンジメソッドを書きます
- ジェネレータ
- VARARG
私たちは、行き当たりばったり、乾いた手が不足しています
再帰
# 传递 ; 回归
# 递归: 函数a内部直接调用函数a本身
# import sys
# sys.setrecursionlimit(10)
# print(sys.getrecursionlimit())
#
# def a():
# x = 1
# print(x)
# a()
#
#
# a()
各再帰的には、ありません?機能を終了していないだろう、とメモリが爆破されている場合、それぞれの再帰は1000年ので、ほとんどの再帰的、開放されたメモリ空間を開きます
本物の再帰は、終了条件を持っている必要があります
再帰:
- 内部には、機能を自分で呼び出します
- 終了条件が存在する必要があります
- 再帰は、法律を持っている必要があります