高校物理160203 views
りんご209490 views
中学英語811710 views
中学理科1630641 views
LaTeX962153 views
高校化学2924392 views
ヒストリア290598 views
高校倫理1440106 views
中学社会668760 views
世界の国564520 views
Help
Tools
NewsSpreadsheetCalendarSlidesTier ListPen ToolIllustrationCrayonPixel ArtASCII ArtPerspectiveEndless StairsGraphMind MapER DiagramFamily TreeMemeCurved TextImage EditorMosaicRetro FilterPencil SketchOCR/HighlighterMakeup EditorFaviconVideo TrimmerScrolling VideoVideo TitleColor PickerColor ExtractorBonfireFireworksWater RippleWater SplashBreaking GlassWood GrainMarble TextureCSS ButtonIcon MakerBar ChartGrouped Bar ChartStacked Bar ChartPie ChartLine ChartArea ChartStacked Area ChartScatter Plot3D Bar Chart3D Pie ChartBar Chart RaceBubble ChartPopulation PyramidPictogramEarningsCandlestick ChartInvestment RiskMortgage SimulatorCalculatorMatrix CalculatorFunction GraphPolynomial ExpansionVenn DiagramField VisualizerRubik's Cube Group TheoryTraveling SalesmanVoronoi and DelaunayFractalColumn ArithmeticDraw Math FiguresArithmetic AnimationArithmetic Word ProblemsCounting with Tree DiagramsCube NetsCross SectionsMotion PathMechanicsWavesLight and LensesThermodynamicsHow Semiconductors WorkMolecular StructuresAtomic OrbitalsElectrochemical CellsChemical EquilibriumCrystal LatticesBuffer pHComplex IonsDNA Double HelixCell DivisionMembrane ChannelsNerve ImpulseRock ClassificationWeatherConstellationsSolar and Lunar Eclipses3D ModelingFloor PlanSeismic StructuresIntersection TurnMaglevCooking AnimationOrigamiLive Viewer CountGeoJSON MapRailway MapPopulation MapCrime MapLand Price MapSchool MapShrine and Castle MapHouse of Representatives MapWord MapSolitaireReversiHakoiri MusumeChessHamburgerRippleSlide Puzzle MakerNeon PinballNovel MakerJapanese Typing PracticePiano Score EditorMusic Theory

English

Python の iter() と next() の基本

iter()next() は、イテレータを手動で操作するための組み込み関数です。for 文では自動的に呼び出されますが、手動で使うことで細かい制御が可能になります。

iter() の基本

iter() はイテラブルからイテレータを生成します。

numbers = [10, 20, 30]
it = iter(numbers)

print(type(it))  # <class 'list_iterator'>

内部的には、オブジェクトの __iter__() メソッドを呼び出しています。

next() の基本

next() はイテレータから次の要素を取り出します。

numbers = [10, 20, 30]
it = iter(numbers)

print(next(it))  # 10
print(next(it))  # 20
print(next(it))  # 30

要素がなくなると StopIteration 例外が発生します。

print(next(it))  # StopIteration が発生

next() のデフォルト値

next() の第2引数にデフォルト値を指定すると、要素がなくなっても例外が発生しません。

numbers = [1, 2]
it = iter(numbers)

print(next(it, 0))  # 1
print(next(it, 0))  # 2
print(next(it, 0))  # 0(デフォルト値)
print(next(it, 0))  # 0(デフォルト値)

これはループの終了判定などに便利です。

実用例:先頭要素のスキップ

イテレータを使えば、先頭の要素をスキップして処理できます。

lines = ["header", "data1", "data2", "data3"]
it = iter(lines)

next(it)  # ヘッダーをスキップ

for line in it:
    print(line)
# data1
# data2
# data3

iter() の2引数形式

iter() には特殊な2引数形式があります。第1引数に呼び出し可能オブジェクト、第2引数に終了値を指定します。

import random

# 0が出るまでランダムな数を生成
it = iter(lambda: random.randint(0, 5), 0)

for n in it:
    print(n, end=" ")
# 例: 3 2 5 1 4 2(0が出たら終了)

この形式は、ファイルを固定サイズで読み込むときなどに使われます。