删除一定百分比的列表元素
本文关键字:列表元素 百分比 删除 | 更新日期: 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++;
}
}
}