标签: enumerable

Enumerator :: Yielder#yield方法何时有用?

这个问题提到了这个Enumerator::Yielder#yield方法.我之前没有使用它,我想知道在什么情况下它会有用.

当您想要创建无限的项目列表(例如Eratosthenes的Sieve)以及何时需要使用外部迭代器时,它是否主要有用?

ruby yield enumerable

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

从列表中排除一个项目(按索引),并取消所有其他项目

有一组List<int>包含一些数字.随机选择一个索引,将单独处理(称之为索引).现在,我想要排除这个特定的索引,并获取所有其他元素List(称为slave).

var items = new List<int> { 55, 66, 77, 88, 99 };
int MasterIndex = new Random().Next(0, items .Count);

var master = items.Skip(MasterIndex).First();

// How to get the other items into another List<int> now? 
/*  -- items.Join;
    -- items.Select;
    -- items.Except */
Run Code Online (Sandbox Code Playgroud)

Join,Select,Except-任何人,怎么样?

编辑:无法删除原始列表中的任何项目,否则我必须保留两个列表.

.net c# linq list enumerable

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

Python相当于C#的.Select?

我在Python中有一个对象列表,每个对象都有一个id属性.我想获得这些ID的列表.

在C#我会写

myObjects.Select(obj => obj.id);
Run Code Online (Sandbox Code Playgroud)

我将如何在Python中执行此操作?

c# python linq enumerable

13
推荐指数
3
解决办法
2261
查看次数

实体框架:Enumerable.Contains的预编译查询

实体框架5+应该预先编译所有查询.但是,对于诸如此类的查询

List<Guid> ids;
var entities = context.MyEntities.Where(x => ids.Contains(x.Id)).ToArray();
Run Code Online (Sandbox Code Playgroud)

实体框架无法预编译查询,并且根据整体查询的复杂性,将表达式树解析为SQL可能会消耗几秒钟.有没有人找到一个解决方法来获得预编译的查询?我真的不明白为什么会这么难; 当然很难用参数,因为元素的数量可以不同,但​​是像SQL那样就足够了

SELECT a, b, c from MyEntities
WHERE c in __PLACEHOLDER__
Run Code Online (Sandbox Code Playgroud)

然后用实际的列表元素替换占位符.当然,它不如传递参数那么好,但它要比等待几秒钟一遍又一遍地解析整个表达式树要好得多.

c# entity-framework contains enumerable

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

在List <T> - C#中选择一周内没有休息日的记录

我有一个Employee定义如下的类:

Employee
{
   public int Id { get; set; }
   public string Name { get; set; }
   public DateTime WorkDate { get; set; }
   public bool isOff { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是我的类实现和用法:

List<Employee> workers = new List<Employee>()
{
    new Employee { Id = 1, Name = "Emp 1", WorkDate = Convert.ToDateTime("4/11/2016"), IsOff = false},
    new Employee { Id = 1, Name = "Emp 1", WorkDate = Convert.ToDateTime("4/12/2016"), IsOff = false},
    new Employee { Id = 1, Name …
Run Code Online (Sandbox Code Playgroud)

c# linq ienumerable enumerable

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

如何通过相邻元素上的条件将数组拆分为有限数量的分区

假设我有一系列数字,例如

ary = [1, 3, 6, 7, 10, 9, 11, 13, 7, 24]
Run Code Online (Sandbox Code Playgroud)

我想在第一个点之间拆分数组,其中较小的数字跟随较大的数字.我的输出应该是:

[[1, 3, 6, 7, 10], [9, 11, 13, 7, 24]]
Run Code Online (Sandbox Code Playgroud)

我试过了slice_when,它非常接近:

ary.slice_when { |i, j| i > j }.to_a
#=> [[1, 3, 6, 7, 10], [9, 11, 13], [7, 24]]
Run Code Online (Sandbox Code Playgroud)

但它也在13和之间分裂7,所以我必须加入其余的数组:

first, *rest = ary.slice_when { |i, j| i > j }.to_a
[first, rest.flatten(1)]
#=> [[1, 3, 6, 7, 10], [9, 11, 13, 7, 24]]
Run Code Online (Sandbox Code Playgroud)

这看起来有点麻烦.在找到匹配项后继续比较项目似乎效率低下.

我正在寻找基于任意条件的通用解决方案.有数字元素,i > j …

ruby arrays enumerable

13
推荐指数
3
解决办法
1192
查看次数

为什么可以使用Enumerable#each_with_object?

根据ApiDock,Ruby方法Enumerable#each_with_object已被弃用.除非它是错误的(说"在Rails的最新稳定版本上弃用"让我怀疑可能是Rails的猴子修补已被弃用),为什么它被弃用了?

ruby enumerable

12
推荐指数
3
解决办法
7703
查看次数

为什么`Enumerable`有'first`而不是`last`?

Enumerablefirst:

(3..5).to_enum.first
# => 3
Run Code Online (Sandbox Code Playgroud)

但它没有last:

(3..5).to_enum.last
# => NoMethodError: undefined method `last' for #<Enumerator: 3..5:each>
Run Code Online (Sandbox Code Playgroud)

这是为什么?

ruby enumerable

12
推荐指数
2
解决办法
1379
查看次数

Enumerable的group_by是否保留了Enumerable的顺序?

是否Enumerable#group_by保留每个值中的原始订单?当我得到这个:

[1, 2, 3, 4, 5].group_by{|i| i % 2}
# => {1=>[1, 3, 5], 0=>[2, 4]}
Run Code Online (Sandbox Code Playgroud)

是否保证,例如,数组[1, 3, 5]包含此顺序的元素,而不是,例如[3, 1, 5]

有关于这一点的描述吗?

我没有提到钥匙1和钥匙之间的顺序0.这是一个不同的问题.

ruby arrays enumerable

12
推荐指数
2
解决办法
2514
查看次数

为什么Enumerable.Range比直接yield循环更快?

下面的代码是检查执行相同解决方案的三种不同方式的性能.

    public static void Main(string[] args)
    {
        // for loop
        {
            Stopwatch sw = Stopwatch.StartNew();

            int accumulator = 0;
            for (int i = 1; i <= 100000000; ++i)
            {
                accumulator += i;
            }

            sw.Stop();

            Console.WriteLine("time = {0}; result = {1}", sw.ElapsedMilliseconds, accumulator);
        }

        //Enumerable.Range
        {
            Stopwatch sw = Stopwatch.StartNew();

            var ret = Enumerable.Range(1, 100000000).Aggregate(0, (accumulator, n) => accumulator + n);

            sw.Stop();
            Console.WriteLine("time = {0}; result = {1}", sw.ElapsedMilliseconds, ret);
        }

        //self-made IEnumerable<int>
        {
            Stopwatch sw = Stopwatch.StartNew();

            var ret = …
Run Code Online (Sandbox Code Playgroud)

c# performance ienumerable range enumerable

11
推荐指数
2
解决办法
6503
查看次数