标签: seq

如何打开 seq<seq<...>> 或其他方式使 Seq.collect(fun x -> x)

dashboard.Grid
|> Seq.mapi ^-^ fun y sx -> 
    sx  |> Seq.mapi ^-^ fun x s -> 
        if not <| s.IsEmpty && s.CellState.Color = color then 
            let psteps = s.CellState.motion( dashboard, new SPosition(x,y), color )
            if psteps <> null then
                if psteps.IsEmpty then
                    Some(psteps)
                else
                    None
            else None
        else None
    |> Seq.choose id
|> Seq.collect(fun x -> x)
|> Seq.collect(fun x -> x)
Run Code Online (Sandbox Code Playgroud)

所以,我只是觉得这个序列的最后一部分(2 个字符串)很奇怪。我可以用另一种方式打开序列吗?List.ofSeq() 在这里不起作用。

谢谢你。

f# sequences sequence seq

1
推荐指数
1
解决办法
226
查看次数

使用2个序列将Seq.map应用于采用2个参数的方法

我正在写一个快速的DB perf测试,并选择F#所以我可以得到更多练习.

我创建了一个measureSelectTimes具有签名的方法Guid list * Guid list -> IDbCommand -> TimeSpan * TimeSpan.

然后,我称之为:

let runTests () =
    let sqlCeConn : IDbConnection = initSqlCe() :> IDbConnection
    let sqlServerConn : IDbConnection = initSqlServer() :> IDbConnection
    let dbsToTest = [ sqlCeConn; sqlServerConn ]
    let cmds : seq<IDbCommand> = dbsToTest |> Seq.map initSchema
    let ids : seq<Guid list * Guid list> = cmds |> Seq.map loadData
    let input = Seq.zip ids cmds
    let results = input |> Seq.map (fun …
Run Code Online (Sandbox Code Playgroud)

f# partial-application seq

1
推荐指数
1
解决办法
1144
查看次数

F#:Seq.forall奇怪吗?

鉴于let ra = ResizeArray<int> ():

Seq.forall (fun i ->
                    let q = i % 2
                    if 0 = q then ra.Add i
                    true ) <| seq { 1..10 }
Run Code Online (Sandbox Code Playgroud)

如果我这样做,ra.Count退货5.

Seq.forall (fun i ->
                    let q = i % 2
                    if 0 = q then ra.Add i
                    0 = q ) <| seq { 1..10 }
Run Code Online (Sandbox Code Playgroud)

如果我这样做,ra.Count退货0.

那么,除非lambda函数的每次迭代求值为true,否则实际上函数中没有任何代码被执行,或者什么?

这里发生了什么?

f# seq

1
推荐指数
1
解决办法
341
查看次数

使用最少的代码打印乘法表

在R中,打印乘法表的最快方法(最短代码)是什么?函数seq rep和绑定函数有帮助,但我正在寻找最短的代码行来完成这项工作.

rbind("1\'s"=1:12, "2\'s"=seq(2,24,2), "3\'s"=seq(3,36,3), 
      "4\'s"=seq(4,48,4), "5\'s"=seq(5,60,5), "6\'s"=seq(6,72,6))
Run Code Online (Sandbox Code Playgroud)

打印1到6(横向).任何人都知道如何以更紧凑的方式执行此操作?

r seq rbind

1
推荐指数
2
解决办法
2960
查看次数

我想将Seq [Tuple2]和Seq [String]合并到Scala中的Seq [Tuple3]

这是我的解决方案,但我不太喜欢它:

var seq1: Seq[String] = Seq("apple", "banana", "camel")
var seq2: Seq[(String, String)] = Seq( "green" -> "fruit", "yellow" -> "fruit", "brown" -> "animal" )
var iter = seq1.toIterator

seq2.map {s => (s._1, s._2, iter.next()) }
Run Code Online (Sandbox Code Playgroud)

merge scala tuples seq

1
推荐指数
1
解决办法
128
查看次数

避免在Bash中使用“ seq”命令?

我正在讨论seq在Bash脚本中使用for小型循环(例如,具有10次迭代的循环)。我说,例如,这样做更好

for i in {1..10}
do
   echo "Welcome $i times"
done
Run Code Online (Sandbox Code Playgroud)

比使用seq

for i in $(seq 10)
do
   echo "Welcome $i times"
done
Run Code Online (Sandbox Code Playgroud)

如此处所写:http : //www.cyberciti.biz/faq/bash-for-loop/

在我看来,对于短循环使用非内置命令是没有用的。例如性能如何?

bash seq

1
推荐指数
1
解决办法
1504
查看次数

在F#序列中复制列表项n次

我在F#中有一个序列:

let n = 2

let seq1 = {
    yield "a"
    yield "b"
    yield "c"
}
Run Code Online (Sandbox Code Playgroud)

我想打印序列中的每个项目n次.我可以这样做:

let printx line t = 
    for i = 1 to t do
        printfn "%s" line

seq1 |> Seq.iter (fun i -> printx i n)
Run Code Online (Sandbox Code Playgroud)

输出为:
a
a
b
b
c
c

我认为这不是最好的解决方案.如何复制序列中的项目?

f# seq

1
推荐指数
1
解决办法
302
查看次数

为什么不`seq 100 | (head -n1; tail -n1)`在Mac OSX上工作?

以下命令应该打印第一行和最后一行seq 100,但它只打印第一行:

seq 100 | (head -n1 ; tail -n1)
1
Run Code Online (Sandbox Code Playgroud)

它适用于较大的序列,例如10,000:

seq 10000 | (head -n1 ; tail -n1)
1
10000
Run Code Online (Sandbox Code Playgroud)

UPDATE

我选择了@ John1024的答案,因为我的问题是为什么这不起作用,他提供了一个可接受的答案.

此外,应该是很明显我only..the现实的看法是,head不以这种方式工作......它很可能消耗更多的标准输入比我想,并留下任何的tail.

当然,在第一个问题中提示此问题的问题是尝试读取文件的第一行和最后一行.这是我基于GNU提出的解决方案sed:

sed -ne'1,9{p;b}' -e'10{x;s/$/--/;x;G;p;b}' -e':a;$p;N;21,$D;ba'
Run Code Online (Sandbox Code Playgroud)

或者更紧凑

sed -ne'1,9{p;b};10{x;s/$/--/;x;G;p;b};:a;$p;N;21,$D;ba'
Run Code Online (Sandbox Code Playgroud)

示例输出:

*注意在我的Mac上,使用MacPorts,GNU sed被调用为gsed.Apple的内置版本sed对于分号分隔表达式很挑剔,需要多个-e参数.这适用于Apple的sed:sed -ne'1,9{' -e'p;b' -e'}' -e'10{' -e'x;s/$/--/;x;G;p;b' -e'}' -e':a' -e'$p;N;21,$D;ba'*

seq 100 | gsed -ne'1,9{p;b}' -e'10{x;s/$/--/;x;G;p;b}' -e':a;$p;N;21,$D;ba'

1
2 …
Run Code Online (Sandbox Code Playgroud)

bash pipe seq

1
推荐指数
1
解决办法
97
查看次数

将Seq [String]转换为String *

我有一个接受String*参数的函数。我正在实现另一个函数,该函数需要Seq[String](或字符串数​​组)作为参数,但需要使用该参数调用先前的函数。有什么办法可以进行转换吗?

def foo (s: String*) = {
    ...
}

def callFoo (s: Seq[String]) = {
    foo (s)     // this throws an error
}
Run Code Online (Sandbox Code Playgroud)

foo函数可以称为foo("string1", "string2", "string3")。但是我只想调用callFoo(Seq[String])函数并从中获取结果foo()

string scala type-conversion seq

1
推荐指数
1
解决办法
626
查看次数

如何在短短几微秒内创建多达 200-500 万个数字的序列

我需要在最短的时间内创建一个数字序列,最好在微秒范围内。这个序列的总长度一般在20-10万个数字之间,但有时我需要创建一个200-30万个数字的序列。目前我已经在 R 中实现了我的代码(只是因为我对语言相当了解)。假设我的序列应该从 1 开始到 25 结束,增量为 0.0001,在 RI 中

s <- seq(1, 25, by = 0.0001)
Run Code Online (Sandbox Code Playgroud)

虽然速度非常快,但这需要几毫秒才能完成

> library(microbenchmark)
> microbenchmark(seq(1, 25, by = 0.0001))
Unit: milliseconds
                   expr    min      lq     mean median     uq     max neval
 seq(1, 25, by = 1e-04) 1.6098 2.14505 3.741858 2.2324 2.3554 83.8912   100
Run Code Online (Sandbox Code Playgroud)

这是我的问题:

1- 是否可以在 R 中更快地生成序列?理想情况下 < 0.5 毫秒?

2- 在某些时候,我需要用另一种(更快的)语言来实现代码,是否有任何语言能够在 100-200 微秒内生成这样的序列?

r seq

1
推荐指数
1
解决办法
103
查看次数

标签 统计

seq ×10

f# ×4

bash ×2

r ×2

scala ×2

merge ×1

partial-application ×1

pipe ×1

rbind ×1

sequence ×1

sequences ×1

string ×1

tuples ×1

type-conversion ×1