gpt4 book ai didi

c# - 如何转置列表列表,用默认值(T)填充空白?

转载 作者:行者123 更新时间:2023-11-30 13:59:24 32 4
gpt4 key购买 nike

如何转置列表列表?

public List<List<T>> Transpose(List<List<T>> lists)

如果内部列表的长度不同,我想用 default(T) 填充空白

这样的转置

new List<List<int>>{
new List<int> {1,2,3},
new List<int> {4,5},
new List<int> {6,7,8,9}
};

会是

new List<List<int>>{
new List<int> {1,4,6},
new List<int> {2,5,7},
new List<int> {3,0,8},
new List<int> {0,0,9}
};

如果您对我为什么不使用矩阵类感到好奇 - 在我的实际用例中,内部类型是 PropertyDescriptor 或 String。

最佳答案

非常简单:

public static List<List<T>> Transpose<T>(List<List<T>> lists)
{
var longest = lists.Any() ? lists.Max(l => l.Count) : 0;
List<List<T>> outer = new List<List<T>>(longest);
for (int i = 0; i < longest; i++)
outer.Add(new List<T>(lists.Count));
for (int j = 0; j < lists.Count; j++)
for (int i = 0; i < longest; i++)
outer[i].Add(lists[j].Count > i ? lists[j][i] : default(T));
return outer;
}

关于c# - 如何转置列表列表,用默认值(T)填充空白?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13586524/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com