我想单独访问我的列表(心脏网格)的列表中的元素,并打印心脏的正确方法了

问题描述 投票:1回答:2

我想单独访问网格的元素,但不断收到以下错误:

类型错误:列表索引必须是整数或片,而不是STR

总的来说,我想作为编程挑战打印的心脏正确的方法并没有在其一侧。我知道我可以像打印单个元素[1] [2]但是,当涉及到通过他们循环,这是我在哪里卡住了。

我试图寻找谷歌和堆栈溢出的答案。

grid = [['.', '.', '.', '.', '.', '.'],
    ['.', 'O', 'O', '.', '.', '.'],
    ['O', 'O', 'O', 'O', '.', '.'],
    ['O', 'O', 'O', 'O', 'O', '.'],
    ['.', 'O', 'O', 'O', 'O', 'O'],
    ['O', 'O', 'O', 'O', 'O', '.'],
    ['O', 'O', 'O', 'O', '.', '.'],
    ['.', 'O', 'O', '.', '.', '.'],
    ['.', '.', '.', '.', '.', '.']]

def print_heart(listx):
for y in listx:
    for x in y:
        print(listx[x][y])
    print()
print_heart(grid) 
python list grid
2个回答
0
投票

这可能是在欺骗你的项目,但你可以转换为numpy的数组,然后简单地调换。

import numpy as np
np.array(grid).transpose()

0
投票

第一种选择:使用内置的zip()zip返回的元组,其中,第i个元组包含来自每个参数序列或iterables的第i个元素的迭代器。无需外部库需要。欲了解更多额外的解释:https://www.geeksforgeeks.org/transpose-matrix-single-line-python/

grid = [['.', '.', '.', '.', '.', '.'],
    ['.', 'O', 'O', '.', '.', '.'],
    ['O', 'O', 'O', 'O', '.', '.'],
    ['O', 'O', 'O', 'O', 'O', '.'],
    ['.', 'O', 'O', 'O', 'O', 'O'],
    ['O', 'O', 'O', 'O', 'O', '.'],
    ['O', 'O', 'O', 'O', '.', '.'],
    ['.', 'O', 'O', '.', '.', '.'],
    ['.', '.', '.', '.', '.', '.']]


new_grid = zip(*grid)

for x in new_grid:
    for y in x:
        print (y, end='')
    print()

第二个选项:使用嵌套列表理解

grid = [['.', '.', '.', '.', '.', '.'],
    ['.', 'O', 'O', '.', '.', '.'],
    ['O', 'O', 'O', 'O', '.', '.'],
    ['O', 'O', 'O', 'O', 'O', '.'],
    ['.', 'O', 'O', 'O', 'O', 'O'],
    ['O', 'O', 'O', 'O', 'O', '.'],
    ['O', 'O', 'O', 'O', '.', '.'],
    ['.', 'O', 'O', '.', '.', '.'],
    ['.', '.', '.', '.', '.', '.']]

new_grid = [[grid[j][i] for j in range(len(grid))] for i in range(len(grid[0]))]

for x in new_grid:
    for y in x:
        print (y, end='')
    print()

输出:

..OO.OO..                                                                                                                                                                 
.OOOOOOO.                                                                                                                                                                   
.OOOOOOO.                                                                                                                                                
..OOOOO..                                                                                                                                                                 
...OOO...                                                                                                                                                                 
....O....
© www.soinside.com 2019 - 2024. All rights reserved.