gpt4 book ai didi

c# - 如何填充嵌套列表

转载 作者:行者123 更新时间:2023-12-03 20:30:54 26 4
gpt4 key购买 nike

我有一个嵌套列表,我需要他来填充函数返回的值。有点像二维矩阵,其中行数等于列表的长度,列数等于另一个列表的长度。问题是如何调用嵌套列表元素的索引?

List<int> wordids;
List<int> hiddenids;
List<List<int>> inputWeights;

foreach (var wordid in wordids)
{
foreach (var hiddeid in hiddenids)
{
inputWeights[wordid][hiddenid] = GetStrength(wordid, hiddenid);
}
}

附言抱歉我的英语不好。

最佳答案

您需要随时将列表添加到 inputWeights:

使用外部 foreach 外部和内部 for 循环:

var inputWeights = new List<List<int>>();

foreach (int wordid in wordids)
{
var currentRow = new List<int>();

for (int i = 0; i < hiddenids.Count; ++i)
currentRow.Add(GetStrength(wordid, hiddenids[i]));

inputWeights.Add(currentRow);
}

使用两个 foreach 循环(这是我的首选解决方案,但意见可能不同!):

var inputWeights = new List<List<int>>();

foreach (int wordid in wordids)
{
var currentRow = new List<int>();

foreach (int hiddenid in hiddenids)
currentRow.Add(GetStrength(wordid, hiddenid));

inputWeights.Add(currentRow);
}

或者使用 Linq 而不是内部循环:

foreach (int wordid in wordids)
{
var currentRow = new List<int>();
currentRow.AddRange(hiddenids.Select(hiddenid => GetStrength(wordid, hiddenid)));
inputWeights.Add(currentRow);
}

或者甚至对整个事情使用 Linq(现在变得难以理解;):

var inputWeights = wordids.Select(
wordid => new List<int>(hiddenids.Select(hiddenid => GetStrength(wordid, hiddenid)))
).ToList();

为了真正完整,这里有一个使用 Linq 查询语法的解决方案(是的,我花了太多时间解决这个问题,但一旦开始我就停不下来了。 ..;)

var inputWeights = (from wordid in wordids
select (from hiddenid in hiddenids
select GetStrength(wordid, hiddenid)).ToList()).ToList();

这一切都是假设您确实想要 (#wordids * #hiddenids) 在结果中!这是真的吗?

例如,如果您有 10 个 wordid 和 5 个 hiddenid,则输出总共将有 50 个项目。

关于c# - 如何填充嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16038629/

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