如何在不使用嵌套for循环的情况下确定2D列表是否包含另一个列表?
我正在寻找一种类似于python中的in
的方法。我尝试使用list.contains(x)
,但似乎无法识别列表:
List a = [[1,2],[1,1],[2,2]];
List b = [1,2];
int c = 1;
b.contains(c) // returns true
a.contains(b) // returns false
答案 0 :(得分:0)
您的方法存在的问题是,在Dart中,所有东西(不同于Java,包括原始数据类型)都是对象,因此,当您使用equals运算符或包含时,Dart会将它们作为对象而不是绝对值进行比较,因此您得到的是假。
深入研究馆藏图书馆,也许您可以找到更好的方法,但也许是这样。
import 'package:collection/collection.dart';
main() async {
Function equals = const ListEquality().equals;
List a = [
[1, 2],
[1, 1],
[2, 2]
];
List b = [1, 2];
int c = 1;
print(b.contains(c));
print(a.contains(b));
bool contains = false;
for (List list in a) {
if (equals(list, b)) {
contains = true;
print(contains);
}
}
}