Menu
CoddyTech

反转列表

本课属于 Coddy Dart 学习旅程的“逻辑与流程控制”单元。第 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: (To Kill a Mockingbird, The Great Gatsby, 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 返回一个可迭代对象,因此打印时会使用圆括号,而不是方括号。

亲手试试

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 属性创建 books 列表的反向视图
  // 按要求的格式打印输出
  
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程控制中的所有课

自己练习: Dart 在线编译器