How to Print a Tuple in Python

Passing it straight to print() is all it takes to print a tuple in Python; you get parentheses and quotes. To print just the values, unpack it with a star: print(*t).

t = ("Seattle", "WA", 3)
print(t)    # ('Seattle', 'WA', 3)
print(*t)   # Seattle WA 3

You’ll see real output below, copied from runs on Python 3.12.5 with a small order record from Seattle.

In this tutorial, we’ll print a whole tuple, print its items without brackets, label it with f-strings, dodge the % formatting trap, and print a list of tuples as a neat table.

Print a whole tuple with print()

print() calls str() on the tuple, so you see Python’s own notation. Strings keep their quotes, which you’ll appreciate when debugging:

order = ("Seattle", "WA", 3, 49.99)
print(order)
print("Order:", order)
print(("Denver",))      # one-element tuple keeps its comma
print(())               # empty tuple

Output:

('Seattle', 'WA', 3, 49.99)
Order: ('Seattle', 'WA', 3, 49.99)
('Denver',)
()
Command Prompt output of Python print() showing a tuple with parentheses, a one-element tuple and an empty tuple
The tuple prints in parentheses with quoted strings; a one-element tuple shows its trailing comma.

That trailing comma in ('Denver',) isn’t a glitch. It’s what makes it a tuple, as explained in creating a Python tuple with one element.

Print tuple elements without parentheses

The star operator spreads the tuple into separate arguments, so print() separates them with spaces. Change sep to get commas or one item per line:

order = ("Seattle", "WA", 3, 49.99)
print(*order)
print(*order, sep=", ")
print(*order, sep="\n")
print(", ".join(map(str, order)))

Output:

Seattle WA 3 49.99
Seattle, WA, 3, 49.99
Seattle
WA
3
49.99
Seattle, WA, 3, 49.99
Command Prompt output of Python print(*tuple) with default, comma and newline separators, plus join with map(str)
Unpacking prints the bare values; sep controls what goes between them.

join() only accepts strings, so mixed tuples need map(str, ...) first. Use it when you want the text in a variable, not just on screen; converting a tuple to a string in Python goes deeper.

How do I print each tuple item on its own line?

A for loop gives you full control over each line. I add enumerate() when I want numbering:

cities = ("Austin", "Boston", "Chicago")
for i, city in enumerate(cities, start=1):
    print(f"{i}. {city}")

Output:

1. Austin
2. Boston
3. Chicago

For while loops, zip() and nested tuples, see iterating through tuples in Python.

Print a tuple with f-strings and avoid the % trap

An f-string drops the whole tuple into text, or you can unpack it into names and format each value, like showing a price as USD with two decimals. Old-style % formatting is different:

order = ("Seattle", "WA", 3, 49.99)
city, state, qty, price = order
print(f"Tuple: {order}")
print(f"{city}, {state}: {qty} items at ${price:.2f} = ${qty * price:.2f}")

try:
    print("Order: %s" % order)
except TypeError as err:
    print("TypeError:", err)
print("Order: %s" % (order,))

Output:

Tuple: ('Seattle', 'WA', 3, 49.99)
Seattle, WA: 3 items at $49.99 = $149.97
TypeError: not all arguments converted during string formatting
Order: ('Seattle', 'WA', 3, 49.99)
Command Prompt output of Python f-strings printing a tuple and a formatted USD total, and the TypeError from % formatting a tuple
The f-string lines print cleanly, while % treats the tuple as four arguments and raises a TypeError.

Wrapping it as (order,) fixes %, but f-strings are simpler. Naming the parts like this is covered in unpacking a tuple in Python.

Print a list of tuples as a table

Database rows often arrive as a list of tuples. Unpack each row and use width specs to line up columns:

sales = [("2026-01-15", "Miami", 1250.5), ("2026-02-03", "Portland", 980.0),
         ("2026-03-21", "Phoenix", 15420.75)]
print(f"{'Date':<12}{'City':<10}{'Amount':>12}")
for date, city, amount in sales:
    print(f"{date:<12}{city:<10}{amount:>12,.2f}")

Output:

Date        City            Amount
2026-01-15  Miami         1,250.50
2026-02-03  Portland        980.00
2026-03-21  Phoenix      15,420.75
Command Prompt output of a Python list of tuples printed as an aligned table with dates, US cities and USD amounts
Left-aligned dates and cities, right-aligned amounts with thousands separators and two decimals.

The ,.2f spec adds the comma and two decimals, also shown in formatting numbers with commas in Python. To order the rows first, see sorting a list of tuples in Python.

Print nested tuples and named tuples readably

Long nested tuples wrap badly with plain print(). You’ll get cleaner lines from pprint, and a named tuple prints its field names:

from pprint import pprint
from collections import namedtuple

regions = (("West", ("Seattle", "Portland", "San Francisco")),
           ("South", ("Austin", "Miami", "Atlanta")))
pprint(regions, width=50)

Store = namedtuple("Store", ["city", "state", "revenue"])
print(Store("Columbus", "OH", 87500.25))

Output:

(('West',
  ('Seattle', 'Portland', 'San Francisco')),
 ('South', ('Austin', 'Miami', 'Atlanta')))
Store(city='Columbus', state='OH', revenue=87500.25)

For deeper structures, working with a tuple of tuples in Python shows how to read them.

Ways to print a tuple compared

GoalCodeOutput style
Debug viewprint(t)('Austin', 3)
Bare valuesprint(*t)Austin 3
Custom separatorprint(*t, sep=", ")Austin, 3
As a string", ".join(map(str, t))Austin, 3
In a sentencef"Row: {t}"Row: ('Austin', 3)

Four more tuple and printing tutorials pair well with this one:

Frequently asked questions

How do I print a tuple in Python?

Pass it to print(): print(t) shows it with parentheses, like ('Austin', 3).

How do I print a tuple without parentheses?

Unpack it with print(*t), or use print(*t, sep=", ") for commas.

Why does print show a comma after a single item?

('Denver',) is how Python writes a one-element tuple; the comma marks it as a tuple.

Why does “%s” % my_tuple raise a TypeError?

% treats a tuple as its list of arguments. Use % (my_tuple,) or an f-string.

How do I print a tuple on one line without spaces?

Use print(*t, sep="") or "".join(map(str, t)).

Where is print() documented?

See print() in the Python docs.