为什么使用Python的f-string语法的这个打印语句会输出双重括号?

4
在接下来的代码中,我输出了可以用来索引列表lst的值域。 然而,由于Python格式文字的一些古怪特性,输出包含了两个开括号和两个闭括号,而不是一个。 我看不出我的格式字符串有什么问题。我只是把所有应该替换的表达式放在花括号里。其余部分不应该被替换。
lst = [1,2,3,4,5,6]
print(f"range({-len(lst), len(lst)})")
> range((-6, 6))
2个回答

5
表达式-len(lst), len(lst)是一个元组。通常情况下,逗号才是元组的标志,而不是括号。因此,您输出的结果显示了您明确编写的外部括号和元组中的内部括号。为避免这种情况,请对您要打印的每个项目使用单独的格式。
print(f"range({-len(lst)}, {len(lst)})")

另一种方法是去除显式的括号:

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

抱歉,我应该自己得出结论。有时候人们会被细节迷惑而看不到全局。 - avans
@pqans。别担心。我强烈怀疑这个问答将对未来的读者有用 :) - Mad Physicist

0

你应该单独放置花括号,而不是整体放置。例如:

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

如果那不起作用,我就不知道还有什么其他解决方案了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接