Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我想单独访问列表列表中的元素(心脏网格),并以正确的方式向上打印心脏_Python_List_Grid - Fatal编程技术网

Python 我想单独访问列表列表中的元素(心脏网格),并以正确的方式向上打印心脏

Python 我想单独访问列表列表中的元素(心脏网格),并以正确的方式向上打印心脏,python,list,grid,Python,List,Grid,我试图单独访问网格元素,但不断出现以下错误: TypeError:列表索引必须是整数或片,而不是str 总的来说,我想以正确的方式打印心脏,而不是将其作为编程挑战。我知道我可以打印像[1][2]这样的单个元素,但当涉及到循环时,这就是我被卡住的地方 我试着搜索google和stack overflow来寻找答案 grid = [['.', '.', '.', '.', '.', '.'], ['.', 'O', 'O', '.', '.', '.'], ['O', 'O', 'O

我试图单独访问网格元素,但不断出现以下错误:

TypeError:列表索引必须是整数或片,而不是str

总的来说,我想以正确的方式打印心脏,而不是将其作为编程挑战。我知道我可以打印像[1][2]这样的单个元素,但当涉及到循环时,这就是我被卡住的地方

我试着搜索google和stack overflow来寻找答案

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) 

这可能会欺骗您的项目,但您可以转换为numpy数组,然后简单地转置

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

这可能会欺骗您的项目,但您可以转换为numpy数组,然后简单地转置

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

第一个选项:使用内置的
zip()
zip
返回元组迭代器,其中第i个元组包含来自每个参数序列或iterables的第i个元素。不需要外部库。更多额外解释:

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

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....

第一个选项:使用内置的
zip()
zip
返回元组迭代器,其中第i个元组包含来自每个参数序列或iterables的第i个元素。不需要外部库。更多额外解释:

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

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....

您想要什么作为输出?您得到了错误,因为您在第一个print语句中将实际元素作为索引传递。@creativeCoder您认为我的答案如何?或者您想让我详细说明一下吗?您想要什么作为输出?您得到了错误,因为您在第一个print语句中将实际元素作为索引传递。@creativeCoder您认为我的答案如何?或者你想让我详细说明一下吗?如果这不是你想要的,试试看如果这不是你想要的,试试看谢谢。有没有一种不用拉链的方法。另外,请解释一下*网格是指针?@creativeCoder编辑了我的文章。请参阅使用
zip
的说明,并添加了另一种更原始的矩阵转置方法。谢谢。有没有一种不用拉链的方法。另外,请解释一下*网格是指针?@creativeCoder编辑了我的文章。请参阅使用
zip
的说明,并添加了另一种更原始的矩阵转置方法。