4 回答
TA贡献2021条经验 获得超8个赞
这是一个可以做到这一点的班轮(虽然不是这个解决方案的粉丝) [list(x) for x in [word[i:i+8] for i in range(0, len(word), 8)]]
一个更好的班轮(如@chris mentionned): [list(w[i:i+8]) for i in range(0, len(w), 8)]
我会把它分成两部分:
text = 'KARALLOCGNTEBMAIBHEOCPFMRUNEOFUMAWGKDURAVDRECAZSEMJALOTSOXVACUNU'
n = 8
words = [text[i:i+n] for i in range(0, len(text), n)]
grid_letters = [list(w) for w in words]
输出:
[['K', 'A', 'R', 'A', 'L', 'L', 'O', 'C'],
['G', 'N', 'T', 'E', 'B', 'M', 'A', 'I'],
['B', 'H', 'E', 'O', 'C', 'P', 'F', 'M'],
['R', 'U', 'N', 'E', 'O', 'F', 'U', 'M'],
['A', 'W', 'G', 'K', 'D', 'U', 'R', 'A'],
['V', 'D', 'R', 'E', 'C', 'A', 'Z', 'S'],
['E', 'M', 'J', 'A', 'L', 'O', 'T', 'S'],
['O', 'X', 'V', 'A', 'C', 'U', 'N', 'U']]
TA贡献1841条经验 获得超3个赞
from textwrap import wrap
def words(letters):
gridLetters = wrap(letters,8)
separarParabras = [[char for char in gridLetters[i]] for i in range(8)]
return separarParabras
print(words('KARALLOCGNTEBMAIBHEOCPFMRUNEOFUMAWGKDURAVDRECAZSEMJALOTSOXVACUNU'))
诀窍是有一个嵌套的列表理解,你从 gridLetters 中选择一个词使用gridLetters[i]并遍历其中的字符
TA贡献1799条经验 获得超6个赞
尝试
def words(s, size):
return [[ch for ch in s[i*size:(i + 1)*size]] for i in range(8)]
for e in words('KARALLOCGNTEBMAIBHEOCPFMRUNEOFUMAWGKDURAVDRECAZSEMJALOTSOXVACUNU', 8):
print(e)
输出
['K', 'A', 'R', 'A', 'L', 'L', 'O', 'C']
['G', 'N', 'T', 'E', 'B', 'M', 'A', 'I']
['B', 'H', 'E', 'O', 'C', 'P', 'F', 'M']
['R', 'U', 'N', 'E', 'O', 'F', 'U', 'M']
['A', 'W', 'G', 'K', 'D', 'U', 'R', 'A']
['V', 'D', 'R', 'E', 'C', 'A', 'Z', 'S']
['E', 'M', 'J', 'A', 'L', 'O', 'T', 'S']
['O', 'X', 'V', 'A', 'C', 'U', 'N', 'U']
TA贡献1874条经验 获得超12个赞
首先找到字符串,然后将其拆分为列表,然后使用列表理解
试试这个衬垫:
li = [['KARALLOC'], ['GNTEBMAI'], ['BHEOCPFM'], ['RUNEOFUM'], ['AWGKDURA'], ['VDRECAZS'], ['EMJALOTS'], ['OXVACUNU']]
li = [list(item) for l in li for item in l]
print(li)
添加回答
举报