C# - 优雅的列表分区方式?

2024-04-19

我想通过指定每个分区中的元素数量将列表分区为列表列表。

例如,假设我有列表 {1, 2, ... 11},并且希望对其进行分区,使每个集合都有 4 个元素,最后一个集合填充尽可能多的元素。生成的分区将类似于 {{1..4}, {5..8}, {9..11}}

怎样写才是优雅的方式呢?


这是一个可以完成您想要的操作的扩展方法:

public static IEnumerable<List<T>> Partition<T>(this IList<T> source, Int32 size)
{
    for (int i = 0; i < (source.Count / size) + (source.Count % size > 0 ? 1 : 0); i++)
        yield return new List<T>(source.Skip(size * i).Take(size));
}

Edit:这是该函数的更简洁的版本:

public static IEnumerable<List<T>> Partition<T>(this IList<T> source, Int32 size)
{
    for (int i = 0; i < Math.Ceiling(source.Count / (Double)size); i++)
        yield return new List<T>(source.Skip(size * i).Take(size));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# - 优雅的列表分区方式? 的相关文章

随机推荐

  • 所有主流浏览器都支持 JSON.parse 吗? [复制]

    这个问题在这里已经有答案了 可能的重复 浏览器原生 JSON 支持 window JSON https stackoverflow com questions 891299 browser native json support windo
  • JMeter:如何访问 ForEach 控制器内的循环计数器?

    我在 JMeter 中有一个 ForEach 控制器 如何访问此控制器内循环的计数器 通过变量 然后使用它来创建新变量 Put 计数器配置元素 http jmeter apache org usermanual component refe
  • 用于 ListView 的 Kotlin setOnClickListener

    我有以下代码 class BookListActivity AppCompatActivity var array arrayOf Item 1 Item 2 Item 3 Item 4 Item 5 Item 6 Item 7 Item
  • nginx 不为 ssl 中的 Rails 资产提供服务

    我正在我的 nginx nginx 版本 nginx 1 4 1 Ubuntu rails Rails 3 2 16 和 unicorn unicorn v4 7 0 vps 中安装自签名 ssl 证书 没有 ssl 一切看起来都很好 但自
  • GoogleTalk 应用程序是用什么编程语言开发的?

    有谁知道 Google Talk 应用程序是用哪种编程语言开发的 是的 我询问的是 Windows 客户端应用程序 http www google ro talk http www google ro talk googletalk exe
  • 使用elasticsearch按一天中的时间累积流量

    我正在接收来自大量客户端应用程序的请求 事件 我想使用elasticsearch 来找出我的最高流量点是什么时候 我尝试过的一件事是使用嵌套直方图进行过滤器聚合 然后使用嵌套的 术语 聚合 通过脚本字段获取一天中的不同时间 以下是我的尝试
  • 解析维基百科的出生和死亡日期?

    我正在尝试编写一个 python 程序 可以在维基百科中搜索人们的出生和死亡日期 例如 阿尔伯特 爱因斯坦出生于 1879 年 3 月 14 日 逝世日期 1955 年 4 月 18 日 我开始于使用 Python 获取维基百科文章 htt
  • Tuple 与 int[2] 内存使用情况

    有人知道这两者之间的内存差异吗 或者说 一个人自己如何轻松地弄清楚这一点 对于 32 位 CLR 两者都有 4 个字节用于锁 4 个字节用于类型句柄 8 个字节用于两个 int 然而 该数组将有额外的 4 个字节来存储长度 本例中为 2 个
  • Swift 处理数字真的很慢吗?

    当我在玩快速教程时 我开始编写一个自定义的isPrime方法来检查给定的Int是否是素数 写完后我发现它可以正常工作 但发现执行起来有点慢isPrime一些quite大量 仍然远低于Int max 所以我在 objc 中编写了同样的代码 代
  • 在 C# 4.0 中执行字符串

    我想在 C 中执行动态创建的字符串 我知道 VB 和 JScript Net 可以做到这一点 甚至还有一个way http odetocode com Code 80 aspx在 C 中使用其程序集作为解决方法 我也发现了这个article
  • 如何将 Angular Material 6 自动完成功能与数据服务器结合使用

    我正在使用 Angular 6 和 Material 6 开发一个简单的页面 我想使用 Material 的自动完成功能从服务中恢复数据 但我不知道如何做好 来自官方的例子https material angular io componen
  • 如何在 SQLite 中将毫秒转换为日期

    我将 Calendar getTimeInMilliseconds 中的日期存储在 SQLite DB 中 我需要在 SELECT 语句中按每个月标记第一行 因此我需要仅使用 SQLite 函数将时间 以毫秒为单位 转换为任何日期格式 我怎
  • 切换 C++ 函数的调用堆栈

    这是我的上一个问题 https stackoverflow com questions 1371547 explanation of asm code关于切换 C 调用堆栈 但是 C 使用不同的调用约定 thiscall 并且可能需要一些不
  • Javascript:删除最后一个字符(如果是冒号)

    Javascript 的相对新手 正在寻找一种方法来删除字符串的最后一个字符 如果它是冒号 I know myString myString replace 将适用于行的开头 但不知道如何交换 字符更改为行尾 任何人都可以纠正它吗 Than
  • R 中函数的运算符重载 - 奇怪的行为

    不幸的是像这样的事情 f g 3 其中 f 和 g 都是一元函数 在 R 中不起作用 因此 我尝试通过以下方式重载一元函数的 运算符 function function e1 e2 return function x e1 x e2 x 但
  • Git - 进一步重新合并

    合并与变基的主要缺点是合并会导致树混乱 如果 master 经常被更新 那么每次有重大更新时合并 mastery 将创建大量不必要的提交 现在 大多数时候 实际上没有任何必要 考虑存储库如下 Master A B C D E Branch
  • Gitlab代码审查批量评论?

    在Gitlab中进行代码审查时是否可以获取批量注释 与 Phabricator 类似 当审阅者对您的代码进行多条评论时 您只会收到一封电子邮件 我们正在尝试在工作中使用 Gitlab 但感觉每条评论的单独电子邮件都像垃圾邮件一样 Thank
  • 启动服务的小部件也会启动主要活动

    我有一个应该启动和停止服务的小部件 在不运行时启动它 在运行时停止它 这工作正常 但是 每次启动服务时 我的应用程序的主要活动也会启动 这是我不想要的 如果我删除 MAIN intent filter
  • 如何在 Laravel 4 中注册命名空间

    问题 PostController php 中第 4 行未找到类 PostRepostioryInterface 或者在修改命名空间时我什至得到了类 找不到应用 模型 接口 PostRepositoryInterface 问题 如何在 la
  • C# - 优雅的列表分区方式?

    我想通过指定每个分区中的元素数量将列表分区为列表列表 例如 假设我有列表 1 2 11 并且希望对其进行分区 使每个集合都有 4 个元素 最后一个集合填充尽可能多的元素 生成的分区将类似于 1 4 5 8 9 11 怎样写才是优雅的方式呢