- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
val xs = Iterator
.from(1)
.dropWhile(_ % 2 != 0)
.takeWhile(_ < 10)
.toList
val ys = Iterator
.from(1)
.filter(_ % 2 == 0)
.takeWhile(_ < 10)
.toList
println(xs)
println(ys)
输出:
List(2, 3, 4, 5, 6, 7, 8, 9)
List(2, 4, 6, 8)
为什么?我期待两者的输出相同。
最佳答案
dropWhile
丢弃集合开始条件为true
的所有项。一旦第一项不符合条件,它就会停止丢弃。
filter
丢弃整个集合中条件不为真的所有项。直到采集结束才停止。
在您的情况下,dropWhile
丢弃 1
但在到达 2
时停止,因为条件 _ % 2 != 0
为假。
filter
会丢弃所有 _ % 2 == 0
为假的值,即所有奇数。
关于Scala dropWhile 与过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51583361/
我是 HS 的大四学生,也是函数式编程和 Scala 的新手。我在 Scala REPL 中尝试了一些结构,需要一些关于返回响应的指导 //Defined a tuple scala> val x =
在示例中,我观察到 dropWhile 的行为: *Main> dropWhile (/= 'X') "AXF" "XF" 但是,我很困惑为什么 "AX" 不返回: *Main> dropWhile
val xs = Iterator .from(1) .dropWhile(_ % 2 != 0) .takeWhile(_ < 10) .toList val ys = Iterat
val xs = Iterator .from(1) .dropWhile(_ % 2 != 0) .takeWhile(_ < 10) .toList val ys = Iterat
简介 我想出了一个巧妙的解决方案来解决我的问题,但不太巧妙,它不起作用:-/ 在我认为点击调试器几个小时之后,也许你可以验证这一点,它不起作用的原因是因为 itertools.dropwhile,在初
我正在尝试使用 itertools.dropwhile 仅从生成器返回第三个元素之后的元素,但我遇到了一些麻烦: from itertools import dropwhile it = (i
我正在努力寻找一种方法来根据谓词跳过流开头的某些元素。 类似这样的事情: dropWhile( n -> n inTail.b || i >= 3 && (inTail.b = true))
我需要读取几个 .dat 文件并从中提取适当的信息。 .dat 文件通常以大约 15-25 行注释开始(行以“#”开头),然后接下来的两行是数字,表示其性质和大小。但是,一旦我尝试阅读第一行非注释行,
我正在努力寻找一种方法来根据谓词跳过流开头的某些元素。 像这样: dropWhile( n -> n inTail.b || i >= 3 && (inTail.b = true))
我正在尝试学习 Java-9 中的新功能 我开始了解 Stream 的 dropWhile 方法,但它在两种不同的情况下返回不同的值。这是我的代码 package src.module; import
有人可以帮我了解这里发生的事情吗 lists:dropwhile(fun(X) -> X X X < 8 end, lists:seq(1,10)), io:format("~w", [MyLis
考虑以下因素: module Main where import Criterion.Main import qualified Data.Vector as V f1 ::
我看过相关帖子,但不太了解这个问题。我正在寻找一种在外循环中快进迭代器而不在循环中调用 next() 的方法。 答案可能只是在内循环中使用相同的迭代器,但我认为 itertools 可能是一种不错的方
我认为在 scala 中这些方法工作正常但在 java9 dropWhile 中工作不同。 这里是 takeWhile 的例子 Stream.of("a", "b", "c", "de", "f",
给定一个条件,我想搜索一个元素列表并返回第一个达到条件的元素和前一个元素。 在 C/C++ 中,这很容易: int i = 0; for(;;i++) if (arr[i] == 0) break;
为什么 dropwhile 和 takewhile 会跳过下面例子中的最后一个 a? >>> import itertools >>> s = "Aardvark" >>> def vowel(c):
我有一个包含多个报告的文本文件。每个报告都以文字“REPORT ID”开头,并具有特定值,即 ABCD。对于简单的情况,我只想提取那些具有 ABCD 值的报告的数据。对于复杂性,我只想提取 TAG1
我一直在用 .foldRight() 递归地实现高阶函数。喜欢 any , all , 和 takeWhile作为实践,但 dropWhile一直难以捉摸。 _Collections.kt具有命令式的
我现在正在阅读《Modern Java in Action》。在流部分,我不清楚一件事。我们有 list : //public Dish(String name, boolean vegetarian
是否有一种简单的方法可以在 N 循环后停止迭代器?当然我可以写这样的东西: for i, val in enumerate(gen()): if i > N: break 但我想写一些类似的东
我是一名优秀的程序员,十分优秀!