Python equivalents to PHP’s foreach

One of the first problems I had when learning Python was looping over data. PHP’s arrays are very versatile, but in Python, you need to think in terms of lists and dictionaries.

Here’s a cheatsheet for various foreach variants, translated into Python:

Looping over a numeric array (PHP)


$items = array( 'orange', 'pear', 'banana' );

# without indexes
foreach ( $items as $item )
    echo $item;

# with indexes
foreach ( $items as $i => $item )
    echo $i, $item;

Looping over a list (Python)

items = ['orange', 'pear', 'banana']

# without indexes
for item in items:
    print item

# with indexes
for (i, item) in enumerate(items):
    print i, item

Looping over an associative array (PHP)


$continents = array(
    'africa' => 'Africa',
    'europe' => 'Europe',
    'north-america' => 'North America'

# without keys
foreach ( $continents as $continent )
    echo $continent;

# with keys
foreach ( $continents as $slug => $title )
    echo $slug, $title;

Looping over a dictionary (Python)

continents = {
    'africa': 'Africa',
    'europe': 'Europe',
    'north-america': 'North America'

# without keys
for continent in continents.values():
    print continent

# with keys
for (slug, title) in continents.items():
    print slug, title

Important note: Unlike associative arrays in PHP, Python dictionaries are not ordered.


To see all the methods that a list object has, open a python console and type help([]). It’s a lot faster than googling for documentation.

For more awesome Python tips, see Code Like a Pythonista: Idiomatic Python.

comments powered by Disqus