Python開発者なら解決できる問題


今日はPython資料型iterを探して、新しい知識を勉強して共有したいと思います.
まず,list,zip,iter,rangeリソースタイプについて読者が知っていると仮定する.

問題1 range(5)の出力値は?


はい、先に手を下ろしてください.Pythonでrangeの定義は何ですか?
Pythonはrangeを作成する数字の範囲を提供します.
またlist、dictionary、set、string、tupleデータ型もあります.
しかし問題はrange()を迂回するのではなく、簡単な出力である.

range(0,5)


正解になる次の問題

質問2リスト(range(5)*2とlist(range(5)*2)の出力値?


まずrangeもlistもiterable資料型です.しかし、*2をよく見ると、位置が違います.list*(a)を実行すると、listの値が一度コピーされます.では、Rangeをしてもいいですか.残念ながらrangeはサポートされていません.したがって、1番目の値は0~4の値を2回繰り返し、2番目の値は次のエラーを出力します.
TypeError: unsupported operand type(s) for *: 'range' and 'int'
さらに、a=[1,2,3]というリストがあり、b=a*3であればb=[1,2,3,1,2,3,1,2,3]となる.ここのすべての1のメモリの位置は同じですか?違うの?
はい、これは簡単なレプリケーションなので、同じ数値のint値が同じメモリを参照していることに気づくかもしれません.

問題3*[img]*10の出力値は?


はい、今はますます難しくなりました.range()をlist()に置き換え、iter()関数でiterator()オブジェクトを作成します.*と[]は互いにクリアされていると考えられているため、*10は10個のイテレーションを出力します.
これは前述した単純なレプリケーションであるため,指す位置も同じである.
<list_iterator object at 0x0000020E33004190> 
<list_iterator object at 0x0000020E33004190>  ....
今着きました.最後の質問を見てみましょう.

質問4リスト(zip(*[img]*10)の出力値は?


今は上で学んだことにしようzipにはlist iteratorが12個リストされます.ここでzip()はiterableオブジェクトのインデックスを返します.
ex) [a,b][c,d] => [(a,c) , (b,d)]
では10個に相当します.

[(1,1,1,1,1,1,1,1,1,1),(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2),…(4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4)生成して問題を解決する!


でもこれは終わりじゃない!

もう一度考えてみましょうか.IteratorはC言語の次の構造体を連想すると思いますしたがってnext()をしながら次のノードに移動できます.

ただし、Pythonの反復器は、一度通過したノードを参照しません。


したがって、[(1、1、1、1、1、1、1)、1、(2、2、2、2、2、2、2、2、2、2、2)、…(4、4、4、4、4、4、4、4、4、4、4、4、4)のうち、最後の値以外の値は消滅する.

[(1.2.3.4]


再度iter()を検索して、勉強する時間ができて、他の人はどのように考えて、伝言を残してください:)
以上、開発者が解決を試みるPythonの問題です!!