создание списка внутри списка с использованием Python - PullRequest
0 голосов
/ 15 февраля 2012

Итак, у меня есть два списка:

shape = [1,2,4]
board = [0,0,1,0,0,0,1,1,1]

Я хочу назначить индекс доски для индекса формы, используя цикл for, чтобы я мог поместить любой размер формы.Я хочу, чтобы результат формы был [0,0,1].

Я пытался сделать:

list1 = []
for x in shape:
      list1.append(board[x])

Но вывод, который он мне дает, составляет [0,1,0].

Я хочу, чтобы вывод был [0,0,1], первые три индекса доски.

Ответы [ 3 ]

3 голосов
/ 15 февраля 2012

Вы используете

list1 = []
for x in shape: 
    list1.append(board[x])

Этот код означает сделать list1 равным [board[1], board[2], board[4]], поскольку вы начинаете с пустого списка, а затем добавляете board[x] для каждого x в shape (и так как индексы списка начинаются с 0 в Python) , Вы, вероятно, хотите что-то вроде

list1 = []
for i in xrange(len(shape)):
    list1.append(board[i])

Теперь i варьируется от 0 до 2, по желанию.

1 голос
/ 15 февраля 2012

Так что вы имеете в виду, что числа в shape не имеют значения? Вы просто хотите первые len(shape) элементы в board независимо от чисел в shape?

В этом случае:

board[0:len(shape)]
0 голосов
/ 15 февраля 2012

списочные индексы начинаются с 0, элементы доски с индексами [1,2,4] являются действительными [0,1,0].если вы хотите использовать индексы, основанные на 1, вам необходимо настроить их:

 list1 = [board[i-1] for i in shape]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...