为什么这个使用 Python f 字符串的 print 语句会输出双括号?

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

提问人:Wör Du Schnaffzig 提问时间:4/13/2021 最后编辑:BoannWör Du Schnaffzig 更新时间:4/14/2021 访问量:594

问:

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

lst = [1,2,3,4,5,6]
print(f"range({-len(lst), len(lst)})")
> range((-6, 6))
python-3.x 括弧 F-字符串

评论


答:

5赞 Mad Physicist 4/13/2021 #1

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

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

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

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

评论

0赞 Wör Du Schnaffzig 4/13/2021
对不起,我应该自己得出结论。有时人们看不到树木的森林。
0赞 Mad Physicist 4/13/2021
@pqans。不用担心。我强烈怀疑这个问答对未来的读者有用:)
0赞 zatro 4/13/2021 #2

您应该单独放置大括号,而不是全部。喜欢:

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

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