测试整数列表是奇数还是偶数

Art*_*ani 32 c#

试图确定我的整数列表是由奇数还是偶数组成,我想要的输出是真和/或假的列表.我可以在列表lst上执行以下操作,还是需要创建循环?A是输出.

    List <int> lst = new List <int>();
    A = IsOdd(lst);
Run Code Online (Sandbox Code Playgroud)

TGH*_*TGH 47

只需使用模数

遍历列表并在每个项目上运行以下内容

if(num % 2 == 0)
{
  //is even
}
else
{
  //is odd
}
Run Code Online (Sandbox Code Playgroud)

或者,如果你想知道是否所有都是偶数你可以做这样的事情:

bool allAreEven = lst.All(x => x % 2 == 0);
Run Code Online (Sandbox Code Playgroud)

  • 你可以使用`!lst.Any(x => x%2!= 0)来表达你的`allAreEven`性能;`想象一下包含数百万项的列表,第一项是奇数,不需要计算其余项. (3认同)

Mic*_*x2a 44

您可以尝试使用Linq来投影列表:

var output = lst.Select(x => x % 2 == 0).ToList();
Run Code Online (Sandbox Code Playgroud)

这将返回一个新的bool列表,以便{1, 2, 3, 4, 5}映射到{false, true, false, true, false}.

  • @ArthurMamou-Mani - 总之,它让你"抽象"循环的想法.如果你要避免使用LINQ,你需要创建一个新的列表,遍历旧的列表,添加到新的列表等等......随着时间的推移它会变得乏味,不得不经常重新思考和重新设计它基本操作 - 映射,过滤等.使用LINQ可以编写您想要发生的事情,并将一堆常见操作链接在一起,而不必每次都重新实现一个长而复杂的嵌套for循环序列.这节省了大量时间,并且通常会产生更高效的代码. (2认同)

Fre*_* 24 17

至少有7种不同的方法来测试数字是奇数还是偶数.但是,如果你仔细阅读这些基准测试,你会发现,如上所述的TGH,模数运算是最快的:

if (x % 2 == 0)
               //even number
        else
               //odd number
Run Code Online (Sandbox Code Playgroud)

以下是一些其他方法(来自网站):

//bitwise operation
if ((x & 1) == 0)
       //even number
else
      //odd number

//bit shifting
if (((x >> 1) << 1) == x)
       //even number
else
       //odd number

//using native library
System.Math.DivRem((long)x, (long)2, out outvalue);
if ( outvalue == 0)
       //even number
else
       //odd number
Run Code Online (Sandbox Code Playgroud)