如何将字符串转换为矩阵

时间:2015-03-18 13:48:35

标签: python python-3.x matrix

我写了一个可以通过迷宫找到方法的程序。该程序使用矩阵。

现在我想知道如何转换这个字符串:

XXXXXXXXXXXXXXXIXXX
X                 X
X XXXXXXXXXXXXXXXXX
X             X   X
X XXX XXXXX X X X X
X   X X   X X X X X
X X X XXX X X X X X
X X X     X X   X X
XXXXXXXXXXXOXXXXXXX

进入这样的矩阵:

data = [["X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "I", "X", "X", "X"], 
        ["X", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "X"], 
        ["X", " ", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X"], 
        ["X", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "X", " ", " ", " ", "X"], 
        ["X", " ", "X", "X", "X", " ", "X", "X", "X", "X", "X", " ", "X", " ", "X", " ", "X", " ", "X"], 
        ["X", " ", " ", " ", "X", " ", "X", " ", " ", " ", "X", " ", "X", " ", "X", " ", "X", " ", "X"], 
        ["X", " ", "X", " ", "X", " ", "X", "X", "X", " ", "X", " ", "X", " ", "X", " ", "X", " ", "X"], 
        ["X", " ", "X", " ", "X", " ", " ", " ", " ", " ", "X", " ", "X", " ", " ", " ", "X", " ", "X"], 
        ["X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", "O", "X", "X", "X", "X", "X", "X", "X"]] 

2 个答案:

答案 0 :(得分:1)

假设您将字符串定义为

text = '''
X....
'''

你通过

获得矩阵
matrix = [[str(char) for char in line] for line in text.splitlines()]

答案 1 :(得分:1)

为我工作:

[[x for x in line] for line in a.split('\n')]

示例:

>>> a = """
... XXXXXXXXXXXXXXXIXXX
... X                 X
... X XXXXXXXXXXXXXXXXX
... X             X   X
... X XXX XXXXX X X X X
... X   X X   X X X X X
... X X X XXX X X X X X
... X X X     X X   X X
... XXXXXXXXXXXOXXXXXXX
... """


>>> [[x for x in line] for line in a.split('\n')]
[[], ['X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'I', 'X', 'X', 'X'], ['X', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'X'], ['X', ' ', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X'], ['X', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'X', ' ', ' ', ' ', 'X'], ['X', ' ', 'X', 'X', 'X', ' ', 'X', 'X', 'X', 'X', 'X', ' ', 'X', ' ', 'X', ' ', 'X', ' ', 'X'], ['X', ' ', ' ', ' ', 'X', ' ', 'X', ' ', ' ', ' ', 'X', ' ', 'X', ' ', 'X', ' ', 'X', ' ', 'X'], ['X', ' ', 'X', ' ', 'X', ' ', 'X', 'X', 'X', ' ', 'X', ' ', 'X', ' ', 'X', ' ', 'X', ' ', 'X'], ['X', ' ', 'X', ' ', 'X', ' ', ' ', ' ', ' ', ' ', 'X', ' ', 'X', ' ', ' ', ' ', 'X', ' ', 'X'], ['X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'O', 'X', 'X', 'X', 'X', 'X', 'X', 'X'], []]

删除空的子列表:

[z for z in ([x for x in line] for line in a.split('\n')) if z]