擅长:python、mysql、java
<p>您可以使用内置的<code>map</code>、<code>max</code>和<code>zip</code>:</p>
<pre><code>>>> week1, week2 = '1------', '--3-5--'
>>> ''.join(map(max, zip(week1, week2)))
'1-3-5--'
</code></pre>
<p>这是因为:</p>
<ul>
<li><p><code>zip</code>返回每个字符串中第n个字符的元组<code>[('1', '-'), ('-'. '-'), ... ]</code></p></li>
<li><p><code>max</code>从元组返回<code>-</code>,当且仅当所有条目都是<code>-</code>。这是因为<code>-</code>的排序低于数字字符,例如<code>max('1', '-') == '1'</code>。</p></li>
<li><p><code>map</code>将<code>max</code>应用于压缩列表中的每个元组,生成一个包含最多字符的列表。</p></li>
<li><p><code>''.join</code>使用空字符串将使用<code>map</code>生成的最大字符列表链接在一起。</p></li>
</ul>
<p>如果您有两周以上的字符串,则此表达式也适用:</p>
<pre><code>>>> week3 = '------7'
>>> ''.join(map(max, zip(week1, week2, week3)))
'1-3-5-7'
</code></pre>