擅长:python、mysql、java
<p>正如@wwii在评论中所建议的,<code>trans = list(zip(*words))</code>非常接近,但是得到的是元组而不是字符串。你知道吗</p>
<p>这样做有效:</p>
<pre><code>words = [
'KWDSEHQGUI',
'RSNKYDVCME',
'MBUSWHEZRI',
'CVNHWGOQUL',
'RNTCQWHJKA']
trans = list(map(lambda x: ''.join(x),zip(*words)))
print(trans)
</code></pre>
<p>我发现我更喜欢@yabishek的答案,但不知道哪种解决方案会更快。你知道吗</p>
<pre><code>from timeit import timeit
from random import randint
size = 100
data = []
for _ in range(size):
data.append(''.join([chr(65+randint(0, 25)) for _ in range(size)]))
def test_map():
return list(map(lambda x: ''.join(x), zip(*data)))
def test_comprehension():
return list(''.join(w) for w in zip(*data))
print('map:', timeit(lambda: test_map(), number=10000))
print('comprehension:', timeit(lambda: test_comprehension(), number=10000))
</code></pre>
<p>结果:</p>
<pre><code>map: 1.54815
comprehension: 1.5759290999999997
</code></pre>
<p>所以,通常情况下,<code>map</code>比理解快,但不会快很多。如果你只做了几次,我会同意他们的回答,如果你需要做很多,或者大量的数据,我会同意我的。你知道吗</p>