gpt4 book ai didi

python - 从python中的列表创建矩阵

转载 作者:太空宇宙 更新时间:2023-11-04 09:45:35 25 4
gpt4 key购买 nike

我对 python 中的列表有疑问,我需要将其转换为矩阵。该列表总是随机的,所以我不知道如何制作它。这是一个例子:

['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '\n', '1', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '1', '\n', '1', ' ', ' ', '1', ' ', ' ', '1', '1', '1', '1', '\n', '1', ' ', ' ', '1', ' ', ' ', ' ', ' ', ' ', '1', '\n', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '\n', '\n']


我希望它看起来像一个矩阵,这样对于每个 '\n' 它都会生成一个新列表:

[['1', '1', '1', '1', '1', '1', '1', '1', '1', '1'], ['1', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '1'], ['1', ' ', ' ', '1', ' ', ' ', '1', '1', '1', '1'], ['1', ' ', ' ', '1', ' ', ' ', ' ', ' ', ' ', '1'], ['1', '1', '1', '1', '1', '1', '1', '1', '1', '1']]


我不知道如何制作这个所以有人可以帮忙吗?

最佳答案

您可以使用 itertools.groupby :

from itertools import groupby

def split_at_el(arr, el):
return [list(j) for i,j in groupby(arr,lambda x: x == el) if not i]

x = ['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '\n', '1', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '1', '\n', '1', ' ', ' ', '1', ' ', ' ', '1', '1', '1', '1', '\n', '1', ' ', ' ', '1', ' ', ' ', ' ', ' ', ' ', '1', '\n', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '\n', '\n']

print(split_at_el(x, '\n'))

输出:

[['1', '1', '1', '1', '1', '1', '1', '1', '1', '1'], ['1', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '1'], ['1', ' ', ' ', '1', ' ', ' ', '1', '1', '1', '1'], ['1', ' ', ' ', '1', ' ', ' ', ' ', ' ', ' ', '1'], ['1', '1', '1', '1', '1', '1', '1', '1', '1', '1']]

也适用于任何更长的字符串:

>>> split_at_el(['hello', 'there', '\n', 'more', 'strings'], '\n')
[['hello', 'there'], ['more', 'strings']]

关于python - 从python中的列表创建矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49972053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com