python - 这个 Python 函数中的 f 字符串是如何工作的?
问题描述
嗨,我在某个网站的某个地方找到了以下功能,但有几个问题。该函数返回由星号组成的 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}}"
字面意思是“将空字符串右填充到字符*
长度n
”。换句话说,这是一种神秘的说法'*' * n
。
更一般地说,后面的一切都在格式规范 mini-language:
中定义格式。
总的来说,这是一段相当糟糕的代码,不要拿它作为例子。
推荐阅读
- python - 熊猫重新采样到固定的日期时间
- linux - Linux 中的实时调度器
- css - 使用 grunt-sass/node-sass 预编译全局变量(变量、mixins 等)
- php - cpanel 上的 laravel 在第 66 行引发 autoload_real.php 错误
- wordpress - 如何根据产品类别(分类)添加不同的自定义字段
- android - 以纵向模式拍摄的图像,但在横向视图中显示的图像视图中。安卓
- sql - SQL - 多行合二为一
- javascript - 如何在确认窗口之前调用验证功能?
- installation - 在 Ubuntu 16.04 上为 mecab Japanese tokenizer 安装 ipadic
- javascript - Angular 5 传输状态 api