Learn Python Programming
Start with getting started, installation, and core basics. Clear explanations and practical examples to help you learn faster.
Python Iterators
An iterator is an object that produces values one at a time when you call next() on it. Iterators power for loops, comprehensions, and many built-in functions in Python.
How Iterators Work
# Any iterable (list, string, etc.) can produce an iterator
numbers = [10, 20, 30]
it = iter(numbers) # create an iterator
print(next(it)) # 10
print(next(it)) # 20
print(next(it)) # 30
# next(it) # StopIteration — no more items
# for loops use iterators internally
# This:
for n in numbers:
print(n)
# Is equivalent to:
it = iter(numbers)
while True:
try:
n = next(it)
print(n)
except StopIteration:
break
Iterables vs Iterators
# Iterable: has __iter__() method — can produce an iterator
# Iterator: has __next__() method — produces values one at a time
# Lists are iterable but NOT iterators
my_list = [1, 2, 3]
# next(my_list) # TypeError! Lists do not have __next__
# Call iter() to get an iterator from an iterable
my_iter = iter(my_list)
next(my_iter) # 1 — works!
# An iterator IS also iterable (iter(iterator) returns itself)
print(iter(my_iter) is my_iter) # True
# Key difference: iterables can be looped multiple times
# Iterators are exhausted after one pass
it = iter([1, 2, 3])
print(list(it)) # [1, 2, 3]
print(list(it)) # [] — already exhausted!
Creating Custom Iterators
# Implement __iter__ and __next__ to make a class iterable
class Countdown:
def __init__(self, start):
self.current = start
def __iter__(self):
return self # the object is its own iterator
def __next__(self):
if self.current <= 0:
raise StopIteration
value = self.current
self.current -= 1
return value
# Usage
for num in Countdown(5):
print(num, end=" ")
# 5 4 3 2 1
# Infinite iterator
class InfiniteCounter:
def __init__(self, start=0, step=1):
self.current = start
self.step = step
def __iter__(self):
return self
def __next__(self):
value = self.current
self.current += self.step
return value
# Use with islice to limit
from itertools import islice
counter = InfiniteCounter(start=10, step=5)
print(list(islice(counter, 5))) # [10, 15, 20, 25, 30]
Built-in Iterator Tools
# enumerate — index + value
fruits = ["apple", "banana", "cherry"]
for i, fruit in enumerate(fruits, start=1):
print(f"{i}. {fruit}")
# zip — combine iterables in parallel
names = ["Alice", "Bob", "Charlie"]
scores = [85, 92, 78]
for name, score in zip(names, scores):
print(f"{name}: {score}")
# reversed — iterate backwards
for n in reversed([1, 2, 3, 4, 5]):
print(n, end=" ") # 5 4 3 2 1
# itertools — powerful iterator utilities
from itertools import chain, cycle, repeat, islice
# chain — concatenate iterables
combined = list(chain([1, 2], [3, 4], [5, 6]))
# [1, 2, 3, 4, 5, 6]
# cycle — repeat infinitely
colors = cycle(["red", "green", "blue"])
print([next(colors) for _ in range(7)])
# ["red", "green", "blue", "red", "green", "blue", "red"]
# islice — slice an iterator
from itertools import count
first_10_evens = list(islice(count(0, 2), 10))
# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
Practical Example: File Line Iterator
# Memory-efficient file processing
class FilteredLines:
"""Iterate over non-empty, non-comment lines in a file."""
def __init__(self, filename):
self.filename = filename
self._file = None
def __iter__(self):
self._file = open(self.filename)
return self
def __next__(self):
while True:
line = next(self._file).strip() # raises StopIteration at EOF
if line and not line.startswith("#"):
return line
def __del__(self):
if self._file:
self._file.close()
# Usage — processes file line by line (memory efficient)
for line in FilteredLines("config.txt"):
print(line)
- Iterators produce values lazily — one at a time, on demand, saving memory.
- Implement
__iter__and__next__to make any class iterable. - Iterators are exhausted after one pass — create a new iterator to loop again.
- Use
itertoolsfor powerful iterator utilities:chain,cycle,islice, etc. - For most cases, generators (using
yield) are easier than writing a full iterator class.
Frequently Asked Questions
Answers to common Python getting-started questions
Python Programming Tutorial — Learn Python from Scratch
Python is the world's most popular programming language for beginners, data science, AI/ML, web development, and automation. This tutorial teaches Python step-by-step with clear explanations and runnable code examples. You can try every example in our free Python Compiler without installing anything.
Each topic builds on the previous one, starting from installation and Hello World through advanced concepts like decorators, generators, and file I/O. Whether you are a complete beginner or refreshing specific skills, every page gives you immediately usable code.
What This Tutorial Covers
- Getting Started: Install Python, run online, Hello World
- Basics: Variables, data types, type conversion, input/output
- Operators: Arithmetic, comparison, logical, assignment
- Control Flow: if/elif/else, for loops, while, break/continue
- Data Structures: Lists, tuples, sets, dictionaries
- Strings: Methods, slicing, formatting, f-strings
- Functions: Parameters, return values, *args, **kwargs, scope
- OOP: Classes, objects, inheritance, polymorphism
- File I/O: Reading, writing, CSV, JSON handling
- Exceptions: try/except, custom exceptions, raise
- Advanced: List comprehensions, lambda, generators, decorators
- Modules: import, pip, packages, __name__ == "__main__"
Why Learn Python in 2026?
- #1 most popular language: Ranked first on TIOBE, Stack Overflow, and GitHub for multiple years running.
- AI and Data Science: The primary language for machine learning (TensorFlow, PyTorch, scikit-learn), data analysis (Pandas, NumPy), and AI development.
- Web development: Django and Flask power backends at companies like Instagram, Spotify, and Pinterest.
- Automation: Automate files, emails, web scraping, reports, and system administration tasks in minutes.
- Beginner-friendly: Clean syntax with enforced indentation makes code readable from day one — no curly braces or semicolons.
- Massive job market: Python developers are in high demand across tech, finance, healthcare, and research.
Python vs Other Languages
| Feature | Python | Java | JavaScript | C++ |
|---|---|---|---|---|
| Syntax | Very clean, readable | Verbose | Moderate | Complex |
| Typing | Dynamic, strong | Static, strong | Dynamic, weak | Static, strong |
| Speed | Slower (interpreted) | Fast (JIT) | Fast (V8 JIT) | Fastest (native) |
| Best For | AI/ML, data, automation | Enterprise, Android | Web frontend/backend | Systems, games |
| Learning Time | 2–4 weeks basics | 4–6 weeks basics | 3–4 weeks basics | 8–12 weeks basics |
How to Get Started
- Run Python online: Use our free Python Compiler — no installation needed.
- Install locally: Download Python 3 from
python.org(Windows/Mac) or useapt install python3(Linux). - Verify: Run
python3 --versionin your terminal to confirm installation. - Choose an editor: VS Code with Python extension (free), PyCharm Community (free), or Jupyter Notebook for data science.
- Follow this tutorial in order: Start from Introduction and work through each topic sequentially.
Frequently Asked Questions
No. Python is designed to be beginner-friendly. This tutorial starts from absolute zero and builds up gradually.
Python 3.10+ is recommended. Python 2 reached end-of-life in 2020. All examples in this tutorial use Python 3 syntax.
Basics (syntax, loops, functions) take 2–4 weeks. Intermediate (OOP, file I/O, modules) adds 3–4 weeks. Specialisation (Django, data science, ML) takes another 2–3 months.
Yes, completely free. No account, no sign-up. All topics and examples available without restriction.
Who Is This For?
Complete beginners choosing their first programming language. Students in CS courses needing a Python reference. Data analysts transitioning from Excel to Python (Pandas). Self-taught developers adding Python to their skill set. Professionals automating repetitive tasks. Anyone preparing for Python coding interviews.