【问题标题】:Pythonic way to join a string in a loop to create textblock在循环中加入字符串以创建文本块的 Pythonic 方法
【发布时间】:2020-06-21 13:50:06
【问题描述】:

有没有一种pythonic方法可以在循环中加入一个字符串来创建一个文本块?

例子:

for x in range(4):
    content = f'{x}[block]'
    content+content

print(content)

期望的结果:

0[block]
1[block]
2[block]
3[block]

【问题讨论】:

    标签: python-3.x string for-loop


    【解决方案1】:

    您可以使用 str.join()generator expression 通过换行符加入您的块字符串:

    print("\n".join(f"{x}[block]" for x in range(4)))
    

    或者为了获得更快的性能,请改用list comprehension

    print("\n".join([f"{x}[block]" for x in range(4)]))
    

    请参阅answer,了解为什么第二种方法比第一种更快

    此外,您还可以将每个块字符串附加到列表并在最后加入它们:

    blocks = []
    for x in range(4):
        blocks.append(f"{x}[block]")
    
    print("\n".join(blocks))
    

    如果我们想简单地打印每个块字符串而不用换行符连接,我们可以使用 print() 中的 sep 关键字:

    print(*(f"{x}[block]" for x in range(4)), sep="\n")
    

    输出:

    0[block]
    1[block]
    2[block]
    3[block]
    

    【讨论】:

      猜你喜欢
      • 2020-11-27
      • 1970-01-01
      • 2013-09-02
      • 1970-01-01
      • 2019-11-29
      相关资源
      最近更新 更多