[英]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.