[英]Colorama and the grid challenge from automate the boring stuff book: I want to paint the heart
[英]I want to individually access element of my list of lists (heart grid) and print the heart the correct way up
我试图单独访问网格的元素,但不断出现以下错误:
TypeError:列表索引必须是整数或切片,而不是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)
这可能会欺骗您的项目,但您可以将其转换为numpy数组,然后简单地进行转置。
import numpy as np
np.array(grid).transpose()
第一种选择 :使用内置的zip()
。 zip
返回一个元组的迭代器,其中第i个元组包含每个参数序列或可迭代对象中的第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....
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.