删除列表元素的百分比

时间:2014-08-06 05:19:29

标签: c# image

我们说我有一个像

这样的数字列表

1 2 3 4 5 6 7 8 9 10

现在我要删除50%的列表,所以我现在有一个像这样的列表 1 3 5 7 9

我不想删除前50%,所以不是这样 6 7 8 9 10

我想定期从列表中删除。 我试图在C#或JAVA中实现它。

我知道有时候不可能完全删除那个百分比,但是接近的东西就可以了。

我的过程始终是一个整数,因此从0到100。

我试图用N%的名单来做这个,我应该怎么开始?

2 个答案:

答案 0 :(得分:1)

    int halfNumOfList = myList.Count / 2;
    int itemsRemoved = 0;

    for (int i = 0; i < myList.Count; i++)
    {
        if (itemsRemoved < halfNumOfList)
        {
            if (i % 2 != 0)
            {
                myList.Remove(myList[i]);
                itemsRemoved++;
            }
        }
    }

答案 1 :(得分:1)

您可以使用Linq:

List<int> source = new List<int>() {
  1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

// Take every other item from the list
List<int> result = source
  .Where((item, index) => index % 2 == 0)
  .ToList();

应该详细阐述一般情况:

int percent = 50;

List<int> result = source
  .Where((item, index) =>
         (index == 0) || 
         (index * percent / 100) > ((index - 1) * percent / 100))
  .ToList();