我正在寻找一种方法来扩大与每个列表之间的分隔符列表。示例(在子列表之间添加0):我有这个
List<List<int>> list = [[1,2,3],[4,5,6],[7,8,9]];
字符串我想要的:
List<int> newList = [1,2,3,0,4,5,6,0,7,8,9]
型list.expand((element) => element)可以将子列表合并为:[1,2,3,4,5,6,7,8,9]个但分隔符iss不见了:-(
list.expand((element) => element)
[1,2,3,4,5,6,7,8,9]
tzdcorbm1#
您可以通过添加分隔符项这样展开。
list.expand((element)=>[...element,0])
字符串更新
list.reduce((a,b)=>[...a,0,...b])
型
x8goxv8g2#
一种解决方案是对Iterable进行扩展,如expandWithSeparator,并支持分隔符值:
Iterable
expandWithSeparator
void main() { List<List<int>> list = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]; print(list.expandWithSeparator((element) => element, 0).toList()); // [1, 2, 3, 0, 4, 5, 6, 0, 7, 8, 9] } extension<E> on Iterable<E> { Iterable<T> expandWithSeparator<T>( Iterable<T> Function(E element) toElements, T separator, ) sync* { bool first = true; for (final element in this) { if (first) { first = false; } else { yield separator; } yield* toElements(element); } } }
字符串
a9wyjsp73#
List<List<int>> list = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]; list.fold([], (total, item) => [...total, if (total.isNotEmpty) 0, ...item]);
3条答案
按热度按时间tzdcorbm1#
您可以通过添加分隔符项这样展开。
字符串
更新
型
x8goxv8g2#
一种解决方案是对
Iterable
进行扩展,如expandWithSeparator
,并支持分隔符值:字符串
a9wyjsp73#
字符串