数学講師2886227 views
高校化学2924392 views
小学算数1200427 views
りんご209490 views
ヒストリア290598 views
高校日本史190571 views
教育149510 views
LaTeX962153 views
MathPython497343 views
高校国語788336 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 のイテラブルとイテレータの違い

Python では「イテラブル」と「イテレータ」という似た言葉がありますが、これらは明確に異なる概念です。混同しやすいので、しっかり整理しておきましょう。

イテラブルとは

イテラブル(iterable)とは、for 文で繰り返し処理できるオブジェクトのことです。リスト、タプル、文字列、辞書、集合などが該当します。

# これらはすべてイテラブル
for x in [1, 2, 3]:       # リスト
    print(x)

for c in "hello":          # 文字列
    print(c)

for k in {"a": 1, "b": 2}: # 辞書
    print(k)

イテラブルは __iter__() メソッドを持っており、これを呼び出すとイテレータを返します。

イテレータとは

イテレータ(iterator)とは、__next__() メソッドを持ち、要素を1つずつ取り出せるオブジェクトです。イテレータ自身も __iter__() を持っているため、イテラブルでもあります。

numbers = [1, 2, 3]
iterator = iter(numbers)  # イテレータを取得

print(next(iterator))  # 1
print(next(iterator))  # 2
print(next(iterator))  # 3

両者の関係

イテラブル

__iter__() を持つ。for 文で使える。何度でも繰り返せる。リスト、文字列、辞書など。

イテレータ

__iter__()__next__() を持つ。要素を1つずつ返す。一度使い切ると終わり。

重要なのは、イテラブルは「イテレータを生成できるもの」であり、イテレータは「実際に要素を取り出す機能を持つもの」という点です。

numbers = [1, 2, 3]

# イテラブルは何度でもイテレータを生成できる
iter1 = iter(numbers)
iter2 = iter(numbers)

print(next(iter1))  # 1
print(next(iter2))  # 1(別のイテレータなので最初から)

この違いを理解しておくと、for 文の動作やジェネレータの仕組みがより明確になります。