为了账号安全,请及时绑定邮箱和手机立即绑定

字符串到python中的多维列表

字符串到python中的多维列表

不负相思意 2023-02-22 19:09:50
我想知道如何在 python 中将字符串转换为多维列表,我需要的输出是[['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']]但我只知道如何转换成这种形式[['KARALLOC'], ['GNTEBMAI'], ['BHEOCPFM'], ['RUNEOFUM'], ['AWGKDURA'], ['VDRECAZS'], ['EMJALOTS'], ['OXVACUNU']]我的代码是这样的:from textwrap import wrapdef words(letters):    gridLetters = wrap(letters,8)    separarParabras = [gridLetters[i*1:i*1+1] for i in range(8)]    return separarParabrasprint(words('KARALLOCGNTEBMAIBHEOCPFMRUNEOFUMAWGKDURAVDRECAZSEMJALOTSOXVACUNU'))
查看完整描述

4 回答

?
宝慕林4294392

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']]


查看完整回答
反对 回复 2023-02-22
?
偶然的你

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]并遍历其中的字符


查看完整回答
反对 回复 2023-02-22
?
哈士奇WWW

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']


查看完整回答
反对 回复 2023-02-22
?
HUWWW

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)


查看完整回答
反对 回复 2023-02-22
  • 4 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信