izip_longest
itertools
はあなたの友人です。これは、最も長い反復可能(ここでは文字列)を使用して所望の空間に設定することができフィル値によって不足している文字を置き換える:
from itertools import izip_longest
def f(strings):
return ''.join(
map(lambda x: ''.join(x), izip_longest(*strings, fillvalue=' '))
)
a = ["abcd", "12", "x"]
print(repr(f(a)))
結果:
'a1xb2 c d '
chain
代わりmap
の持つ変種第2のjoin
。配列a
に適用される最後の方法の
def f(strings):
return ''.join(
chain(*izip_longest(*strings, fillvalue=' '))
)
中間ステップ:
from pprint import pprint
a1 = izip_longest(*a, fillvalue=' ')
print('# After izip_longest:')
pprint(list(a1))
print('# After chain:')
a1 = izip_longest(*a, fillvalue=' ')
a2 = chain(*a1)
pprint(list(a2))
a1 = izip_longest(*a, fillvalue=' ')
a2 = chain(*a1)
a3 = ''.join(a2)
print('# Result:')
pprint(a3)
結果:
# After izip_longest:
[('a', '1', 'x'), ('b', '2', ' '), ('c', ' ', ' '), ('d', ' ', ' ')]
# After chain:
['a', '1', 'x', 'b', '2', ' ', 'c', ' ', ' ', 'd', ' ', ' ']
# Result:
'a1xb2 c d '
ああ、ありがとう、私は新しく、私はPythonでこれ以上のことを学ぶ必要があることを知っています。 – Paul
@Paul Python [documentation](https://www.python.org/doc/)は既にかなり良いです。 –