Wör Du Schnaffzig
Wör Du Schnaffzig

Reputation: 1051

Why does this print statement using a Python f-string output double parentheses?

In the following code I output the range of values which I can use to index the list lst. However, due to some oddity of Python's format literals the output contains two opening and two closing parentheses instead of one. I don't see what's wrong with my format string. I just put all expressions which should be substituted in curly braces. The rest should not be substituted.

lst = [1,2,3,4,5,6]
print(f"range({-len(lst), len(lst)})")
> range((-6, 6))

Upvotes: 4

Views: 931

Answers (2)

zatro
zatro

Reputation: 1

You should have put the curly brackets individually, not in whole. Like:

print(f"range({-len(lst)}, {len(lst)})")

If that doesn't work then I don't know any other solutions.

Upvotes: 0

Mad Physicist
Mad Physicist

Reputation: 114290

The expression -len(lst), len(lst) is a tuple. Usually it's the comma that makes a tuple, not the parentheses. So your output shows the outer parentheses that you explicitly wrote, and the inner parentheses from the tuple. To avoid that, have a separate format for each item you want to print:

print(f"range({-len(lst)}, {len(lst)})")

Alternatively, you can remove the explicit parentheses:

print(f"range{-len(lst), len(lst)}")

Upvotes: 5

Related Questions