首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从F#中的N个不同索引的序列中取N个元素

从F#中的N个不同索引的序列中取N个元素,可以使用以下代码实现:

代码语言:fsharp
复制
let takeNElements (n:int) (seq:seq<_>) =
    seq
    |> Seq.indexed
    |> Seq.filter (fun (i, _) -> i % n = 0)
    |> Seq.map snd

这个函数接受两个参数:n表示要取出的元素个数,seq表示输入的序列。函数首先使用Seq.indexed将序列中的每个元素与其索引一起生成一个新的序列,然后使用Seq.filter过滤出索引为n的倍数的元素,最后使用Seq.map将元素的索引去掉,只保留元素本身。

例如,对于以下序列:

代码语言:fsharp
复制
let seq = seq { 1..10 }

调用takeNElements 2 seq将返回seq [1; 3; 5; 7; 9],即从序列中取出索引为2的倍数的元素。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

- 长度为mint数组随机取出n元素,每次元素都是之前未取过

题目:长度为mint数组随机取出n元素,每次元素都是之前未取过 Fisher-Yates洗牌算法是由 Ronald A.Fisher和Frank Yates于1938年发明,后来被Knuth...等概率: 洗牌算法有些人也称等概率洗牌算法,其实发牌过程和我们抽签一样,大学概率论讲过抽签是等概率,同样洗牌算法选中每个元素是等概率。...用洗牌算法思路1、2、3、4、5这5,随机数 4被抽中概率是1/5 5被抽中概率是1/4 * 4/5 = 1/5 2被抽中概率是1/3 * 3/4 *...list.size() * Math.random()); System.out.println(list.remove(t)); } } ---- Knuth洗牌算法 在上面的介绍发牌过程...该算法基本思想和 Fisher 类似,每次从未处理数据随机取出一数字,然后把该数字放在数组尾部,即数组尾部存放是已经处理过数字。

1.6K10

2022-07-17:1、2、3...n-1、nnn+1、n+2... 在这个序列,只有一数字有重复(n)。 这个序列是无序,找到重复数字n。 这个序

2022-07-17:1、2、3...n-1、nnn+1、n+2...在这个序列,只有一数字有重复(n)。这个序列是无序,找到重复数字n。这个序列是有序,找到重复数字n。...("测试结束");}// 为了测试// 绝对正确,但是直接遍历+哈希表,没有得分方法fn right(arr: &mut Vec) -> i32 { let mut set: HashSet...set.contains(num) { return *num; } set.insert(*num); } return -1;}// 符合题目要求、...一结论 return slow;}// 符合题目要求、无序数组,找重复数// 时间复杂度O(N),额外空间复杂度O(1)// 用异或fn find_duplicate2(arr: &mut Vec...一结论 return ans;}// 符合题目要求、有序数组,找重复数// 时间复杂度O(logN),额外空间复杂度O(1)fn find_duplicate_sorted(arr: &mut

79510

使用Django数据库随机N条记录不同方法及其性能实测

不同数据库,数据库服务器性能,甚至同一数据库不同配置都会影响到同一段代码性能。具体情况请在自己生产环境进行测试。...想象一下如果你有十亿行数据。你是打算把它存储在一有百万元素list,还是愿意一query?...先写了脚本 在manage.py shell调用了下 结果让我震惊了。...此后将不再测试第三种方法 最后,数据量增加到5,195,536 随着表数据行数增加,两方法所用时间都到了一完全不能接受程度。两种方法所用时间也几乎相同。...[:2] 来获取随机记录序列,性能不会比 Python sample = random.sample(xrange(Record.objects.count()),n) result = [Record.objects.all

7K31

记一常见ms sql serverN条记录方法

正文 好像也是一不难问题,刚视频里看到,就记一下吧。 下面是表中原始数据结构,做了一倒叙排序: select * from Employee order by Salary desc ?...首先来看一下如何Salary第二记录。...原理是先获取到最大salary-maxSalary,然后根据salary降序排序,第一条salary小于该maxSalary记录....下面来看一下如何Salary第三记录 --获取salary排行第三的人信息 select top 1 * from ( select top 3 * from Employee order by...注意一下B和Csalary是一样,但是得到3number值是不同,项目中看具体情况,选择需要函数。 我们这里RowNumber. ? 结果也是一样。 就到这里吧。

80120

Go语言实现排列组合问题实例(n个数m)

本文实例讲述了Go语言实现排列组合问题。分享给大家供大家参考,具体如下: (一)组合问题 组合是一基本数学问题,本程序目标是输出n元素m所有组合。...(组合不考虑顺序,即[1,2]和[2,1]属同一组合) 本程序思路(来自网上其他大神): (1)创建有n元素数组,数组元素值为1表示选中,为0则没选中。...m一共有多少种取法可直接通过数学公式计算得出,即: //数学方法计算排列数(nm个数) func mathPailie(n int, m int) int { return jieCheng...(n) / jieCheng(n-m) } //数学方法计算组合数(nm个数) func mathZuhe(n int, m int) int { return jieCheng(n) /...(二)排列问题 n个数取出m进行排列,其实就是组合算法之后,对选中m个数进行全排列。而全排列问题在之前文章已经讨论过了。

4.2K50

Go语言实现排列组合问题实例(n个数m)

本文实例讲述了Go语言实现排列组合问题。分享给大家供大家参考,具体如下: (一)组合问题 组合是一基本数学问题,本程序目标是输出n元素m所有组合。...(组合不考虑顺序,即[1,2]和[2,1]属同一组合) 本程序思路(来自网上其他大神): (1)创建有n元素数组,数组元素值为1表示选中,为0则没选中。...m一共有多少种取法可直接通过数学公式计算得出,即: 复制代码代码如下: //数学方法计算排列数(nm个数) func mathPailie(n int, m int) int { return...jieCheng(n) / jieCheng(n-m) } //数学方法计算组合数(nm个数) func mathZuhe(n int, m int) int { return jieCheng...(二)排列问题 n个数取出m进行排列,其实就是组合算法之后,对选中m个数进行全排列。而全排列问题在之前文章已经讨论过了。

1.8K50

从一集合查找最大最小N元素——Python heapq 堆数据结构

Top N问题在搜索引擎、推荐系统领域应用很广, 如果用我们较为常见语言,如C、C++、Java等,代码量至少也得五行,但是用Python的话,只用一函数就能搞定,只需引入heapq(堆队列)这个数据结构即可...Top N函数,其他函数在用到时候查看文档就好了。...1)、heapq.nlargest(n, iterable[, key]) 迭代器对象iterable返回前n最大元素列表,其中关键字参数key用于匹配是字典对象iterable,用于更复杂数据结构...2)、heapq.nsmallest(n, iterable[, key]) 迭代器对象iterable返回前n最小元素列表,其中关键字参数key用于匹配是字典对象iterable,用于更复杂数据结构...3)如果N很大,接近集合元素,则为了提高效率,采用sort+切片方式会更好,如: 求最大N元素:sorted(iterable, key=key, reverse=True)[:N] 求最小N元素

1.4K100

一日一技:在Python里面如何获取列表最大n元素或最小n元素

= min(a) print(max_value)print(min_value) 运行效果如下图所示: 那么问题来了,如何获取最大3元素和最小5元素?...(f'最大元素:{a[-3:]}') 那有没有其他办法呢?...(3, a)min_five = heapq.nsmallest(5, a) print(f'最大3元素:{max_three}')print(f'最小5元素:{min_five}') 运行效果如下图所示...它会把原来列表转换成一堆,然后最大最小值。 需要注意,当你要是前n大或者前n数据时,如果n相对于列表长度来说比较小,那么使用 heapq性能会比较好。...但是如果n和列表长度相差无几,那么先排序再切片性能会更高一些。

8.7K30

C++经典算法题-m 元素集合n 元素子集

30.Algorithm Gossip: m 元素集合n 元素子集 说明 假设有集合拥有m元素,任意集合取出n元素,则这n元素所形成可能子集有那些?...解法 假设有5元素集点,取出3元素可能子集如下: {1 2 3}、{1 2 4 }、{1 2 5}、{1 3 4}、{1 3 5}、{1 4 5}、{2 3 4}、{2 3 5}、{2 4 5}...、 {3 4 5} 这些子集已经使用字典顺序排列,如此才可以观察出一些规则: 如果最右一元素小于m,则如同码表一样不断加1 如果右边一位已至最大值,则加1位置往左移 每次加1位置往左移后,必须重新调整右边元素为递减顺序...在实际撰写程式时,可以使用一变数positon来记录加1位置,position初值设定为n-1, 因为我们要使用阵列,而最右边索引值为最大 n-1,在position位置值若小于m就不断加1...,如果大于m了,position就减1,也就是往左移一位置;由于位置左移后,右边元素会 经过调整,所以我们必须检查最右边元素是否小于m,如果是,则position调整回n-1,如果不是,则positon

90800

2022-04-21:给定一包含 [0,n) 不重复整数黑名单 blacklist,写一函数 [0, n) 返回一不在 blacklist 随机整数

2022-04-21:给定一包含 [0,n) 不重复整数黑名单 blacklist, 写一函数 [0, n) 返回一不在 blacklist 随机整数, 对它进行优化使其尽量少调用系统方法...1 <= n <= 1000000000, 0 <= blacklist.length < min(100000, N)。 力扣710. 黑名单随机数。...范围是[0,n),黑马单有m;那么随机数范围变成[0,n-m)。然后随机范围内数字,碰到黑名单数根据map映射。 代码用rust编写。...; } struct Solution { size: i32, convert: HashMap, } impl Solution { fn new(n:...n -= 1; while n > blacklist[i as usize] { if n == blacklist[(m - 1) as usize

1.1K40

2023-06-10:给定一n 节点组成网络,用 n x n 邻接矩阵 graph 表示 在节点网络,只有当 gr

2023-06-10:给定一n 节点组成网络,用 n x n 邻接矩阵 graph 表示 在节点网络,只有当 graph[i][j] = 1 时,节点 i 能够直接连接到另一节点 j。...假设 M(initial) 是在恶意软件停止传播之后,整个网络感染恶意软件最终节点数。 我们可以 initial 删除一节点, 并完全移除该节点以及该节点到任何其他节点任何连接。...请返回移除后能够使 M(initial) 最小化节点。 如果有多个节点满足条件,返回索引 最小节点 。 initial 每个整数都不同。...3.对于initial每个节点,遍历其能够直接连接节点,如果节点未被感染,则将其在并查集中祖先标记为initial该节点,如果该祖先已被标记为其他initial节点,则将其标记为-2。...4.统计在同一initial所有节点中,连接总节点数,找出连接数最多initial节点。 5.返回最小索引节点。

19710
领券