繁体   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