разбиение добавленного списка на индексы

#list #insert #indexing #append

#Список #вставить #индексирование #добавить

Вопрос:

Итак, прямо сейчас у меня есть код, который дает мне

[-1], [1], [-1], [-1], [2], [3], [4], [-1], [5], [6], [7], [-1], [-1], [-1], [8], [9], [-1], [-1], [-1], [10]]

но я хочу, чтобы это выглядело так

myVV = [[-1, 1, -1, -1],[ 2, 3, 4, -1],[5, 6, 7, -1],[-1, -1, 8, 9],[ -1, -1, -1, 10]]

у меня есть цикл for со вставленной строкой

myVV.append([])

это дает мне это

[[], [-1], [1], [-1], [-1], [], [2], [3], [4], [-1], [], [5], [6], [7], [-1], [], [-1], [-1], [8], [9], [], [-1], [-1], [-1], [10]]

он вставляет разрыв, если я хочу, чтобы произошло разделение индексов.

Есть что почитать, что помогло бы мне решить эту проблему?

Ответ №1:

Используйте mod, чтобы проверить, пришло ли время добавить новый [] .

 l = [[-1], [1], [-1], [-1], [2], [3], [4], [-1], [5], [6], [7], [-1], [-1], [-1], [8], [9], [-1], [-1], [-1], [10]]
l2 = []
for i in xrange(len(l)):
    if i % 4 == 0:
        l2.append([])
    l2[i/4].append(l[i][0])

print l2
  

С принтами

 [[-1, 1, -1, -1], [2, 3, 4, -1], [5, 6, 7, -1], [-1, -1, 8, 9], [-1, -1, -1, 10]]
  

Комментарии:

1. я немного смущен тем, что работает, я достиг желаемого результата, но не могли бы вы объяснить, как это работает? для будущих вещей, чтобы я мог изучить это и понять логику здесь.

2. @user3772157, i%4 преобразуйте 0,1,2,3,4,5,6,… в 0,1,2,3,0,1,2,…, и i/4 преобразуйте 0,1,2,3,4,5, … в 0,0,0,0,1,1,… Это общие шаблоны, используемые в программировании. Вам просто нужно больше практики, и скоро вы начнете видеть те же шаблоны.

3. Как бы я использовал mod, чтобы проверить, когда добавлять новую строку?

4. я отправил счетчик; однако, я не хочу, чтобы я хотел, потому что это приводит к тому, что они ломаются, как в шаблоне, я хочу добиться [#####][##][#######][#####################] что-то вроде этого # быть числами, конечно

5. @user3772157, извините, я не понимаю вашего вопроса. Пожалуйста, укажите ввод и вывод