C#中的列表切片

时间:2018-11-07 19:07:54

标签: c# python arrays slice

我在python脚本中遇到了这种语法,发现它称为切片分配。您如何用C#编写此语法?

expensesAbove35Arr

1 个答案:

答案 0 :(得分:6)

C#没有切片分配运算符,但是您可以改用List<T>提供的方法:

list[a:b] = otherList 

等同于

list.RemoveRange(a,b-a);
list.InsertRange(a, otherList);

或者,对于

list[:] = [] 

你可以写

list.Clear();

从技术上讲,您可以编写自己的列表类,该类继承自List<T>并模拟python的行为(至少部分地):

public class ExtendedList<T> : List<T> 
{
    public IEnumerable<T> this[int start, int end] 
    {
        get 
        { 
            return this.Skip(start).Take(end - start); 
        }
        set 
        {
            int num = end - start;
            RemoveRange(start, Count - num > 0 ? num : 0);
            InsertRange(start, value);
        }
    }
}