让我们得到列表['abc', 'def', 'gh']
我需要获取一个字符串,其中包含第一个字符串的第一个字符的内容,第二个字符串的第一个字符串,依此类推。
所以结果看起来像这样:"adgbehcf"
但问题是数组中的最后一个字符串可能有两个或一个char。
我已经尝试嵌套for循环但是没有用。
代码:
n = 3 # The encryption number
for i in range(n):
x = [s[i] for s in partiallyEncrypted]
fullyEncrypted.append(x)
答案 0 :(得分:2)
使用itertools.zip_longest
的版本:
from itertools import zip_longest
lst = ['abc', 'def', 'gh']
strg = ''.join(''.join(item) for item in zip_longest(*lst, fillvalue=''))
print(strg)
了解为什么这有效可能有助于查看
for tpl in zip_longest(*lst, fillvalue=''):
print(tpl)
答案 1 :(得分:0)
我想你可以使用:
from itertools import izip_longest
l = ['abc', 'def', 'gh']
print "".join(filter(None, [i for sub in izip_longest(*l) for i in sub]))
# adgbehcf
答案 2 :(得分:0)
请不要使用此:
''.join(''.join(y) for y in zip(*x)) +
''.join(y[-1] for y in x if len(y) == max(len(j) for j in x))
答案 3 :(得分:0)
有:
l = ['abc', 'def', 'gh']
这样可行:
s = ''
In [18]: for j in range(0, len(max(l, key=len))):
...: for elem in l:
...: if len(elem) > j:
...: s += elem[j]
In [28]: s
Out[28]: 'adgbehcf'