九、反復器


一.反復器1.1とは何ですか.反復器とは反復的に値を取るツール1.2を指す.反復は反復のプロセスであり、各反復は前回の結果に基づいて行われます.単純な反復は反復#i=0#while True:#print(i)#反復ではありません.反復+各反復は前回の結果に基づいて行われます.
l = ['a', 'b', 'c']
i = 0
while i  
  

.
   


# l=['a','b','c']
l='hello'
# l=('a','b','c')
i=0
while i  
  


iterable: __iter__
:str,list,tuple,dict,set,

a=1
b=1.1
c='hello'
d=['a','b']
e=('a','b')
j={'x':1}
g={1,2,3}
f=open('a.txt','w')

# なオブジェクトの での__の iter__メソッド、 される は オブジェクトiteratorです
dic={'x':1,'y':2,'z':3}
iter_dic=dic.__iter__()
print(iter_dic)
print(iter_dic.__next__())
print(iter_dic.__next__())
print(iter_dic.__next__())
print(iter_dic.__next__())
-----------------------------------
#StopIteration           
f=open('a.txt','rt',encoding='utf-8')
iter_f=f.__iter__()
print(iter_f.__next__())
print(iter_f.__next__())
print(iter_f.__next__())
print(iter_f.__next__())
---------------------------------------------
hello

word

apple

greed
l=['a','b','c']
print(l.__iter__().__next__())
print(l.__iter__().__next__())
print(l.__iter__().__next__())
iter_l=l.__iter__()
print(iter_l.__next__())
print(iter_l.__next__())
print(iter_l.__next__())
-------------------------------------------
a
a
a
a
b
c

: オブジェクト
#1. _next__メソッドのオブジェクト、 を する_next__ は、インデックスの 2に することなく る.また、_が されていますiter__メソッドのオブジェクト、 を する_iter__ は として そのものを る
# ps:# 1. オブジェクトは なオブジェクトであるに いないが、 なオブジェクトは なオブジェクトとは らない.ファイルオブジェクト が オブジェクトです
l=['a','b','c']
iter_l=l.__iter__() #         __iter__         ,
print(iter_l is iter_l.__iter__().__iter__().__iter__().__iter__().__iter__().__iter__())
------------------------------------------------------------------------------------------------
True
# dic={1,2,3,4}
dic={'x':1,'y':2,'z':3}
print(len(dic)) #dic.__len__()
iter_dic=iter(dic) # dic.__iter__()
while True:
    try:
        print(next(iter_dic)) #iter_dic.__next__()
    except StopIteration:
        break

print('='*50)
--------------------------------------------------------
3
x
y
z
==================================================

#for は サイクル# #1と ぶべきである. にinの ろのオブジェクトの__を び しますiter__メソッドは、これを オブジェクト2にする.next( )を び し、 られた り を k#3に り てる.next( )が を するまでループを り すと、forは を にキャプチャしてループを します.
dic={'x':1,'y':2,'z':3}
for k in dic:
    print(k)

: まとめ# :#1.インデックスに しない な を する. じ にメモリに1つの しか しないため、メモリ#の を できます:#1. を るのはインデックスのように ではありません( した を ることができず、 で るしかありません)#2. の さを できません
l=[1,2,2,3,3,3,3,3,3,3,3,3,3,3]
iter_l=iter(l)
print(iter_l)
--------------------------------------------
names = ['egon', 'alex', 'yxx']
res=map(lambda x:x+"_NB",names)
print(res)
---------------------------------------
obj=range(1,1000000000000000000)
print(obj)
---------------------------------------
range(1, 1000000000000000000)