擅长:python、mysql、java
<p>当然,即使在最后一次迭代中,您也在添加破折号。你知道吗</p>
<p>无论如何,最具python风格的方法是:嵌套2<code>str.join</code>语句:</p>
<pre><code>import string,random
code = "-".join(["".join([random.choice(string.ascii_letters + string.digits) for _ in range(4)]) for _ in range(4)])
print(code)
</code></pre>
<p>举个例子:</p>
<pre><code>m7b1-A0vS-JARQ-hlo2
</code></pre>
<p>内部压缩生成4个字母/数字序列,外部压缩将这些序列中的4个与<code>-</code>连接起来。你知道吗</p>
<p>请注意,<code>join([..])</code>语法可能看起来很麻烦,但是比没有方括号(<a href="https://stackoverflow.com/questions/34822676/joining-strings-generator-or-list-comprehension">Joining strings. Generator or list comprehension?</a>)要快</p>
<p>编辑:注意你的数字/字母可以用<code>random.choice</code>重复。没有重复的更好方法是使用<code>random.choice</code>,如下所示:</p>
<pre><code>import string,random
it = iter(random.sample(string.ascii_letters + string.digits,16))
code = "".join(["-" if i % 5 == 4 else next(it) for i in range(19)])
</code></pre>
<p>迭代器会被使用,除非是时候发出破折号了。你知道吗</p>