簡體   English   中英

我想分別訪問列表列表的元素(心形網格)並以正確的方式打印心形

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM