gpt4 book ai didi

c# - 在 C# 中,将值感染\传输到列表的相邻项

转载 作者:太空狗 更新时间:2023-10-29 22:15:30 27 4
gpt4 key购买 nike

有一个二进制值列表:

List<bool> myList = new List<bool>(){true, true, false, false, true, false, false, false, true, true, true, false, false};

我的算法旨在将任何假项转换为真,如果它们与真值相邻:

result = {true, true, true, true, true, true, false, true, true, true, true, true, false}

如您所见,我的解决方案有效。我可以通过两个不同的循环来完成,然后压缩两个列表:

List<bool> firstList = new List<bool>();
List<bool> secondList = new List<bool>();
for(int i=0; i<myList.Count()-1; i++){
if(myList[i]==true){
firstList[i]=true;
firstList[i+1]=true;
}
}

for(int i=1; i<myList.Count(); i++){
if(myList[i]==true){
secondList[i]=true;
secondList[i-1]=true;
}
}

List<bool> finalList = firstList.Zip(secondList, (a,b)=>a||b).ToList();

但是,这似乎不是最好的解决方案,因为问题看起来很简单。有没有想法通过一个循环或最好使用 linq 来完成?

最佳答案

这是一个 Linq 方法

基本上它与您的方法具有相同的行为 - 元素 self x,前一个 .ElementAtOrDefault(i - 1) 或下一个 .ElementAtOrDefault( i + 1) 元素必须为真。

List<bool> result = myList.Select((x, i) => x || myList.ElementAtOrDefault(i - 1) || myList.ElementAtOrDefault(i + 1)).ToList();

关于c# - 在 C# 中,将值感染\传输到列表的相邻项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47816382/

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