列表推导式与f字符串¶
2024-07-29
难度: 3
时长: 30 min
下面的Python 代码使用了什么技巧?
a = [1,2,3,4,5]
b = f"""
Title
{"".join((f'\n - I am {i}' for i in a))}
# {"".join([f'\n - I am {i}' for i in a])}
"""
Kimi's Answer¶
这段Python代码使用了几种技巧和特性:
列表解析:
a = [1,2,3,4,5]定义了一个包含整数1到5的列表。字符串格式化:
f"""定义了一个多行的格式化字符串(也称为f-string)。f-string是Python 3.6及以后版本中引入的一种新的字符串格式化方法,它允许在字符串中嵌入表达式,并且这些表达式会在运行时被计算和格式化。列表推导式:
[f'\n - I am {i}' for i in a]是一个列表推导式,它遍历列表a中的每个元素i,并将字符串'\n - I am {i}'格式化为包含当前元素值的字符串。字符串连接:
"".join(...)将列表中的字符串元素连接成一个单一的字符串。这里,每个元素都是一个包含换行符和格式化文本的字符串。多行字符串:整个
f"""字符串跨越了多行,这使得代码更加可读,尤其是在处理多行文本时。格式化表达式:在f-string中,
{i}是一个格式化表达式,它会被替换为列表中当前元素的值。
综合这些技巧,代码的执行流程如下:
创建一个包含数字1到5的列表
a。使用列表推导式生成一个包含格式化字符串的列表,每个字符串包含一个数字和文本
'\n - I am {i}'。使用
"".join(...)将这些字符串连接成一个单一的多行字符串。将生成的多行字符串赋值给变量
b。
最终,变量 b 将包含以下文本:
Title
- I am 1
- I am 2
- I am 3
- I am 4
- I am 5
问: 在Python中,除了列表推导式和f-string,还有哪些字符串格式化的方法?
这种代码模式通常被称为"列表推导式"(List Comprehension)结合"f-string"(Formatted String Literals)的使用。列表推导式是一种简洁的构建列表的方法,允许在Python中通过一个表达式来生成列表。而f-string是Python 3.6及以上版本中引入的一种新的字符串格式化方法,它通过在字符串前加上字母 f 来启用,允许在字符串中嵌入表达式。
这种模式因其简洁性和表达力而广受欢迎,常用于快速生成列表或在字符串中嵌入变量或表达式的值。此外,由于f-string的可读性和效率,它在Python社区中被广泛推荐用于字符串格式化。
更多应用实例¶
生成一个 Markdown 链接列表:
markdown_contents = f"""
# Recent Notes List
{''.join(f'\n - [{fid} - {title}]({url})' for fid, title, url in markdown_links)}
"""
生成一个 Html 链接列表:
html_content = f"""
<ul>
{''.join(f'<li><a href="{url}">{fid} - {title}</a></li>'
for fid, title, url in html_links)}
</ul>
"""