How to “zip” or “rotate” a variable number of lists?

后端 未结 8 1645
广开言路
广开言路 2020-11-27 20:47

If I have a list containing an arbitrary number of lists, like so:

var myList = new List>()
{
    new List() { \"a\",          


        
8条回答
  •  半阙折子戏
    2020-11-27 21:11

    Here's an inefficient variant based on Matrix Transposition:

    public static class Ext
    {
        public static IEnumerable> Rotate(
            this IEnumerable> src)
        {
            var matrix = src.Select(subset => subset.ToArray()).ToArray();
            var height = matrix.Length;
            var width = matrix.Max(arr => arr.Length);
    
            T[][] transpose = Enumerable
                .Range(0, width)
                .Select(_ => new T[height]).ToArray();
            for(int i=0; i

提交回复
热议问题