为什么这个使用 Python f-string 的 print 语句输出双括号?

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

在下面的代码中,我输出了可用于索引列表 lst 的值范围。 然而,由于 Python 的格式字面值有些奇怪,输出包含两个左括号和两个右括号,而不是一个。 我看不出我的格式字符串有什么问题。我只是将所有应该替换的表达式放在花括号中。其余的不应该被替代。

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

表达式-len(lst), len(lst)是一个元组。通常是逗号构成元组,而不是括号。因此,您的输出显示您明确编写的外括号和元组中的内括号。为避免这种情况,请为要打印的每个项目设置单独的格式:

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

或者,您可以删除显式括号:

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

你应该把大括号单独放在一起,而不是放在一起。喜欢:

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

如果这不起作用,那么我不知道任何其他解决方案。