这个 Python 函数中的 f-string 是如何工作的?
How does the f-string in this Python function work?
您好,我在某个网站的某个地方发现了以下功能,我有几个问题。函数 returns 由星号组成的 n 行菱形。
- 这是串联的 for 循环吗?这是你能做的事吗?
- 那个 f-string 是怎么回事?
'':*<{line*2+1}
是如何工作的?
def diamond(n):
result = ""
for line in list(range(n)) + list(reversed(range(n-1))):
result += f"{'': <{n - line - 1}} {'':*<{line*2+1}}\n"
return result
关于迭代:是的,它在两个范围的串联上进行迭代,但这不是实现它的最佳方式。使用 itertools.chain()
看起来是更好的选择。
对于格式部分:f"{'':*<{n}}"
字面意思是"right-pad the empty string with *
to the length of n
characters"。换句话说,它是 '*' * n
.
的一种神秘表达方式
更一般地说,:
之后的所有内容都定义了 format specification mini-language 中的格式。
总的来说,这是一段相当糟糕的代码,请勿将其用作示例。
您好,我在某个网站的某个地方发现了以下功能,我有几个问题。函数 returns 由星号组成的 n 行菱形。
- 这是串联的 for 循环吗?这是你能做的事吗?
- 那个 f-string 是怎么回事?
'':*<{line*2+1}
是如何工作的?
def diamond(n):
result = ""
for line in list(range(n)) + list(reversed(range(n-1))):
result += f"{'': <{n - line - 1}} {'':*<{line*2+1}}\n"
return result
关于迭代:是的,它在两个范围的串联上进行迭代,但这不是实现它的最佳方式。使用 itertools.chain()
看起来是更好的选择。
对于格式部分:f"{'':*<{n}}"
字面意思是"right-pad the empty string with *
to the length of n
characters"。换句话说,它是 '*' * n
.
更一般地说,:
之后的所有内容都定义了 format specification mini-language 中的格式。
总的来说,这是一段相当糟糕的代码,请勿将其用作示例。