Menu
Coddy logo textTech

Разворот списка

Часть раздела Логика и управление потоком путешествия по Dart на Coddy — урок 3 из 65.

Иногда вам нужно просмотреть элементы списка в обратном порядке. Dart предоставляет свойство .reversed, которое создает обратное представление вашего списка без изменения исходного списка.

Свойство .reversed возвращает итерируемый объект, который представляет элементы списка в обратном порядке. Это означает, что последний элемент появляется первым, предпоследний — вторым и так далее.

List<int> numbers = [1, 2, 3, 4, 5];

var reversedNumbers = numbers.reversed;
print(reversedNumbers);  // (5, 4, 3, 2, 1)

// Исходный список остается неизменным
print(numbers);  // [1, 2, 3, 4, 5]

Важной деталью является то, что .reversed возвращает итерируемый объект, а не список. Если вам нужно работать с ним как со списком, вы можете преобразовать его с помощью .toList(). Это свойство особенно полезно, когда вам нужно обработать данные в обратном порядке, сохраняя при этом исходный список нетронутым.

challenge icon

Задание

Легко

Создайте программу, которая анализирует список для чтения, отображая книги как в оригинальном, так и в обратном порядке. Ваша программа должна:

  1. Прочитать строковый ввод, представляющий название списка для чтения
  2. Прочитать несколько строковых вводов, представляющих названия книг (ввод закончится, когда вы получите пустую строку)
  3. Использовать свойство .reversed для создания обратного представления списка книг
  4. Вывести анализ списка для чтения в точном формате, показанном ниже

Например, если название списка для чтения — "Summer Reading", а книги — "1984", "To Kill a Mockingbird", "The Great Gatsby", ваша программа должна вывести:

Reading List: Summer Reading
Books in original order: (1984, To Kill a Mockingbird, The Great Gatsby)
Books in reversed order: (The Great Gatsby, To Kill a Mockingbird, 1984)
Total books: 3

Если название списка для чтения — "Quick Reads" и предоставлена только одна книга "Animal Farm", ваша программа должна вывести:

Reading List: Quick Reads
Books in original order: (Animal Farm)
Books in reversed order: (Animal Farm)
Total books: 1

Ваша программа должна использовать свойство .reversed для отображения книг в обратном порядке. Помните, что .reversed возвращает итерируемый объект (iterable), поэтому при выводе он будет отображаться в круглых скобках, а не в квадратных.

Шпаргалка

Используйте свойство .reversed, чтобы просмотреть элементы списка в обратном порядке без изменения исходного списка:

List<int> numbers = [1, 2, 3, 4, 5];

var reversedNumbers = numbers.reversed;
print(reversedNumbers);  // (5, 4, 3, 2, 1)

// Исходный список остается неизменным
print(numbers);  // [1, 2, 3, 4, 5]

Свойство .reversed возвращает итерируемый объект (iterable), а не список. Чтобы преобразовать его обратно в список, используйте .toList().

Попробуйте сами

import 'dart:io';

void main() {
  // Прочитать название списка для чтения
  String? title = stdin.readLineSync();
  
  // Читать названия книг до пустой строки
  List<String> books = [];
  String? book;
  while ((book = stdin.readLineSync()) != null && book!.isNotEmpty) {
    books.add(book);
  }
  
  // TODO: Напишите свой код здесь
  // Используйте свойство .reversed для создания перевернутого представления списка книг
  // Выведите результат в требуемом формате
  
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком