To print a list without brackets in Python, unpack it into print() with a star: print(*my_list). Each item becomes its own argument, so Python prints them separated by spaces with no brackets, commas or quotes. Add sep to choose the separator:
cities = ["Austin", "Denver", "Seattle"]
print(*cities, sep=", ") # Austin, Denver, Seattle
Each snippet ran under Python 3.12.5 in a Windows Command Prompt window, so the outputs you see are real.
We’ll go through unpacking, join() for when you need an actual string, the slicing trick that leaves quotes behind, prices with dollar signs, and lists of lists.
Print a list without brackets using the * unpacking operator
By default, print(cities) shows the list’s repr: square brackets, commas and quotes around every string. Putting * in front spreads the items out as separate arguments instead:
cities = ["Austin", "Denver", "Seattle", "Boston"]
print(cities) # the default list repr
print(*cities) # unpacked: space between items
print(*cities, sep=", ") # custom separator
print(*cities, sep="\n") # one item per line
zip_codes = [73301, 80202, 98101]
print(*zip_codes, sep=" | ") # numbers work too, no str() needed
Output:
['Austin', 'Denver', 'Seattle', 'Boston']
Austin Denver Seattle Boston
Austin, Denver, Seattle, Boston
Austin
Denver
Seattle
Boston
73301 | 80202 | 98101

I like this one because it doesn’t care about types: the ZIP codes print fine without any conversion. The star works in other places too, as my guide to unpacking a list in Python shows.
Turn a list into a string without brackets using join()
print(*lst) only prints. When you’ll need the text itself, say for a log line, a CSV cell or an email body, build it with str.join(). The catch is that join() accepts strings only:
cities = ["Austin", "Denver", "Seattle"]
print(", ".join(cities))
order_ids = [1042, 1043, 1050]
try:
print(", ".join(order_ids))
except TypeError as err:
print("TypeError:", err)
print(", ".join(map(str, order_ids)))
print(" -> ".join(str(n) for n in order_ids))
Output:
Austin, Denver, Seattle
TypeError: sequence item 0: expected str instance, int found
1042, 1043, 1050
1042 -> 1043 -> 1050

map(str, order_ids) converts every item before joining. If you haven’t used it before, the Python map() function is worth a quick read, and concatenating a list of strings into one string goes deeper on join().
Why does str(list)[1:-1] still show quotes?
A common shortcut is to convert the list to a string and slice off the first and last characters. It removes the brackets, but with strings the quotes from the repr stay put:
states = ["Texas", "Ohio", "Utah"]
scores = [88, 92, 79]
print(str(states)[1:-1]) # brackets gone, quotes stay
print(str(scores)[1:-1]) # fine for numbers
print(str(states).strip("[]").replace("'", "")) # works, but breaks on "O'Brien"
print(", ".join(states)) # the clean way
Output:
'Texas', 'Ohio', 'Utah'
88, 92, 79
Texas, Ohio, Utah
Texas, Ohio, Utah
![python print list without brackets str slice quotes command prompt Command Prompt output of Python str(list)[1:-1] removing brackets but keeping quotes, compared with join](https://pythonguides.com/wp-content/uploads/2026/10/python-print-list-without-brackets-str-slice-quotes-command-prompt.png)
Stripping quotes with replace() looks like a fix until a value contains an apostrophe, like O’Brien. I stick with join(). If you actually want quotes in the output, see printing quotes in Python.
Print a list of prices without brackets
Unpacking prints floats exactly as Python stores them, and that isn’t how money should look. A generator inside join() lets you format each value as you go:
prices = [19.5, 4.25, 120.0, 7.999]
print(*prices, sep=", ")
print(", ".join(f"${p:.2f}" for p in prices))
print(f"Total: ${sum(prices):,.2f}")
Output:
19.5, 4.25, 120.0, 7.999
$19.50, $4.25, $120.00, $8.00
Total: $151.75
The :.2f spec rounds to two decimal places, so 7.999 shows as $8.00. More rounding options are covered in printing 2 decimal places in Python.
Print a nested list without brackets, row by row
Unpacking a list of lists only removes the outer brackets; each inner list still prints with its own. Loop over the rows and unpack each one instead:
orders = [
["2026-03-02", "Emily Carter", "Austin", 42.50],
["2026-03-05", "James Miller", "Denver", 18.00],
["2026-03-09", "Olivia Brown", "Seattle", 127.25],
]
print(orders[0]) # one row, still bracketed
for row in orders:
print(*row, sep=" | ") # each row without brackets
for date, name, city, amount in orders:
print(f"{date} {name:<13} {city:<8} ${amount:>7.2f}")
Output:
['2026-03-02', 'Emily Carter', 'Austin', 42.5]
2026-03-02 | Emily Carter | Austin | 42.5
2026-03-05 | James Miller | Denver | 18.0
2026-03-09 | Olivia Brown | Seattle | 127.25
2026-03-02 Emily Carter Austin $ 42.50
2026-03-05 James Miller Denver $ 18.00
2026-03-09 Olivia Brown Seattle $ 127.25

For anything wider than a few columns, the aligned f-string reads better than separators. Building and indexing these structures is covered in list of lists in Python.
Ways to print a list without brackets compared
| Method | Returns | Non-strings OK? | Best for |
|---|---|---|---|
print(*lst, sep=", ") | Nothing (prints) | Yes | Quick console output |
", ".join(lst) | A string | No, strings only | Text you’ll reuse |
", ".join(map(str, lst)) | A string | Yes | Numbers and IDs |
str(lst)[1:-1] | A string | Yes, but quotes stay | Number lists only |
Loop with print(*row) | Nothing (prints) | Yes | Lists of lists |
Once the brackets are gone, these four list tutorials make good follow-ups:
- Print lists in Python
- Print a tuple in Python
- Filter lists in Python
- Sort a list of objects by attribute in Python
Frequently asked questions
How do I print a list without brackets in Python?
Use print(*my_list). Add sep=", " or any other separator to control what goes between items.
How do I print a list without brackets and commas?
print(*my_list) already uses spaces. For a string, use " ".join(map(str, my_list)).
Why does join() raise a TypeError on my list?
join() accepts only strings. Convert the items first with map(str, my_list) or a generator expression.
How do I print each list item on its own line?
Use print(*my_list, sep="\n"), or "\n".join(map(str, my_list)) when you need the string.
How do I remove brackets from a list of lists?
Loop over the outer list and unpack each row: for row in data: print(*row).
Where are print()’s sep and end arguments documented?
See print() in the Python docs.

Bijay Kumar is a 13-time Microsoft MVP with more than 18 years in software development, and the founder of Python Guides and TSinfo Technologies. He started out building .NET and SharePoint solutions at HP, TCS and KPIT before moving into Python, machine learning and AI, and he also builds web apps with TypeScript and React. He writes the tutorials here himself, and every example is run before publishing so you see the real output. More about Bijay · Microsoft MVP profile · LinkedIn