LJN*_*nDk 36 c# python equivalent slice
什么是C#等效的Python切片操作?
my_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
result1 = my_list[2:4]
result2 = my_list[1:]
result3 = my_list[:3]
result4 = my_list[:3] + my_list[4:]
Run Code Online (Sandbox Code Playgroud)
这里有一些内容,但它很难看,并没有解决切片的所有用途,以至于没有明显回答这个问题.
Ben*_*Ben 54
例:
var result1 = myList.Skip(2).Take(2);
var result2 = myList.Skip(1);
var result3 = myList.Take(3);
var result4 = myList.Take(3).Concat(myList.Skip(4));
Run Code Online (Sandbox Code Playgroud)
Ous*_* D. 11
C#8对于索引数据结构,切片变得更加容易。
var result1 = myList[2..5]; // end (5) is exclusive
var result2 = myList[1..^0]; // from index 1 to the end
var result3 = myList[0..3]; // end (3) exclusive
Run Code Online (Sandbox Code Playgroud)
bas*_*hrc 10
如果你有一个List GetRange可以派上用场.
来自MSDN链接:
引用类型集合的浅表副本或该集合的子集仅包含对集合元素的引用.不复制对象本身.新列表中的引用指向与原始列表中的引用相同的对象.
该Slice函数可以是:
public static IEnumerable<T> Slice<T>(this List<T> source, int from, int to) => source.GetRange(from, to - from);
Run Code Online (Sandbox Code Playgroud)
python切片支持的负范围也可以通过一些清洁度的损失来处理.