删除一定百分比的列表元素

本文关键字:列表元素 百分比 删除 | 更新日期: 2023-09-27 18:16:47

假设我有一个数字列表,比如

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 %的列表来做这个,我该怎么开始呢?

删除一定百分比的列表元素

您可以使用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();
    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++;
            }
        }
    }