Как мне l oop хотя длина массива внутри другого массива в Python? - PullRequest
1 голос
/ 17 января 2020

Мне нужно l oop через массив ключей, который представляет собой группу массивов в одном массиве, я использую два для циклов. Один для доступа к различным массивам, а затем один для l oop через содержимое каждого массива. Когда я добираюсь до "for j in range(5):", который является вторым l oop, он говорит "AttributeError: 'str' object has no attribute 'length'", хотя это не одна полная строка, а отдельный символ в массиве, который вы можете проверить в "keys." Что такое правильный путь к l oop через все в массиве ключей?

# import pygame
import os, sys
import pygame
from pygame.locals import *

# initialize game engine
pygame.init()

#WINDOw
width=600
height=400
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("keyboard")

filler = 0;
keys = [['a','b','c','d','e','f'],['g','h','i','j''k'],['l','m','n','o','p'],['q','r','s','t','u'],['v','w','x','y','z']];


animation_increment=10
fps=20
dead=False
clock = pygame.time.Clock()
x = 0

class keyBoard(pygame.sprite.Sprite):
    #code
    def keyDraw(self):
        for i in range(5):
            for j in keys[i]:
                pygame.draw.rect(screen,(255,0,255),(60*i + 10,60*j, 50,50));

Ответы [ 2 ]

1 голос
/ 17 января 2020

Длина списка может быть получена как len. Списки в списке можно просмотреть:

for i in range(len(keys)):
    for j in range(len(keys[i])):

Другой вариант - использовать enumerate:

for i, keylist in enumerate(keys):
    for j, letter in enumerate(keylist):
1 голос
/ 17 января 2020

На ваш вопрос в виде сообщения:

   for j in len(keys[i]):
       print(keys[i][j])
       # print individual characters

Я подозреваю, что вам нужны элементы, а не индексы, но enumerate дает вам оба:

def keyDraw(self):
    for i, char_list in enumerate(keys):
        for j, char in enumerate(char_list):
            pygame.draw.rect(screen,(255,0,255),(60*i + 10,60*j, 50,50))

Я могу ' • настроить использование элементов списка, поскольку вы не предоставили никаких.

i - ваш индекс в keys; char_list будет перебирать списки символов, эквивалентные keys[i].

...