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