На этом сайте слишком много вопросов о списках, но ни один из них не соответствует тому, что я хотел бы сделать.Я уже сделал это с помощью цикла for, но мне было интересно, можно ли это сделать с помощью списочных представлений или кто-то может направить меня туда, где я могу найти аналогичный случай.
У меня есть список функций:
function_list=[iron,cobalt,nickel,copper,zinc,vanadium,chromium,managenese,titanium,footer]
Каждая функция - это вопрос, который я задаю своим студентам и экспортируется в файл PDF.Последняя функция в списке - нижний колонтитул , которая заставляет файл PDF вставить страницу, чтобы перейти на следующую страницу.
Итак, как обычно выглядит простой тест (до сих пор)?
call_functions([x for x in function_list[0:3]] + [function_list[-1]])
генерация
call_functions([iron,cobalt,nickel,footer]) #as desired
, где call_functions в основном экспортер PDF.Таким образом, мое понимание списка добавляет три вопроса и пропускает на следующую страницу, добавляя еще три.По мере роста количества вопросов код выглядит как беспорядок:
call_functions([x for x in function_list[0:3]] + [function_list[-1]] + [x for x in function_list[3:6]]+ [function_list[-1]] + [x for x in function_list[6:9]])
, генерирующий
call_functions([iron,cobalt,nickel,footer,copper,zinc,vanadium,footer,chromium,managenese,titanium]) #as desired
, хотя это работает, я пытаюсь составить единый список понимания, которыйперебирает список и после каждого третьего элемента вставляет последний элемент в список.Или даже оставить нижний колонтитул вне списка также жизнеспособным.Но я не могу заставить его работать.
Я пытался:
[x for i,x in enumerate(function_list[0:9]) if i%3==0 function_list[-1] else x]
до SyntaxError.
Также пытался:
[x if i%3==0 function_list[-1] else x for i,x in enumerate(function_list[0:9])]
Также к SyntaxError
Может ли кто-нибудь сказать мне (или направить меня), что я делаю неправильно, и / или направить в аналогичный случай, пожалуйста?
Спасибо