擅长:python、mysql、java
<p>您可能需要删除for循环中的<code>+=</code>。下面的版本大约比你的快三倍。它甚至在您想在输出中打印<code>%</code>符号的情况下也能工作。因此,格式字符串包含<code>'%%'</code>。在</p>
<pre><code>def my_sprintf(format_str, li):
n = format_str.count('%') - 2*format_str.count('%%')
repeats = len(li)//n
return (format_str*repeats) % tuple(li[:repeats*n])
</code></pre>
<p>如果使用更新的<code>.format</code>方法而不是<code>%</code>,则可以采用一种不那么老套的方法。在这种情况下,可以使用<code>string.Formatter().parse()</code>方法来获取<code>format_str</code>中使用的字段列表。在</p>
<p>然后函数如下所示:</p>
^{pr2}$