我们说我有一个像
这样的数字列表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%的名单来做这个,我应该怎么开始?
答案 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();