C# 数组和列表的基本知识及 LINQ 查询
数组和列表的基本知识及 LINQ 查询
- 一、基本知识
- 二、引用命名空间声明
- 三、数组
- 3.1、一维数组
- 3.2、二维数组
- 3.3、不规则数组 Jagged Array
- 四、列表 List
- 4.1、一维列表
- 4.2、二维列表
- 五、数组和列表使用 LINQ的操作和运算
- 5.1、一维 LIST 删除所有含 double.NaN 的行
- 5.2、一维 LIST 删除所有含指定数据的行
- 5.3、一维 LIST 获得非重复的数列
- 5.3.1、使用 LINQ 的 Distinct 方法
- 5.3.2、使用 HashSet 方法
- 5.4、二维 LIST 的声明、初始化和访问
- 5.5、二维 LIST 使用 LINQ 筛选掉包含 double.NaN 的行及空行
- 5.6、二维 list<list<T>> 删除 某列值相同的行
- 5.6.1、保留第一列数据相同的首行的 LIST
- 5.6.2、保留第一列数据相同的最后一行的 LIST
- 5.6.3、使用LINQ去重,保留第一列数据相同的首行的 LIST
- 5.6.4、使用LINQ去重,移除 LIST 第一列所有数据相同的行
- 六、二维 LIST 和二维数组相互转换
- 6.1、二维数组 int[,] 与 交错数组 int[][] 的区别
- 6.2、二维 LIST 转换为 交错数组
- 6.3、二维 LIST 转换为二维数组
- 6.3.1、直接转换
- 6.3.2、使用交错数组作为转换过程
- 6.3.3、使用 List<数组>作为转换过程
- 6.4、使用 LINQ,简洁地将二维数组 T[,] 转换为二维 List<List<T>>
- 七、字符串分割成 List<T>
- 7.1、字符串分割成 List<字符串>
- 7.2、字符串分割为 List<int> 或 T 为其他数值类型
一、基本知识
数组和列表是 C# 操作计算数据的基础,配合 LINQ 查询可以实现代码的简洁访问。
LINQ 语言集成查询(Language Integrated Query)是.NET框架的扩展,一系列直接将查询功能集成到 C# 语言的技术统称,是一种使用类似 SQL 语句操作多种数据源的功能。List 类是 ArrayList 类的泛型等效类。数组可以是多维数据。
二、引用命名空间声明
using System;
using System.Linq;
using System.Collections.Generic;
三、数组
3.1、一维数组
double[] OneDimensionalArray = { 1.0, 2.0, double.NaN };
3.2、二维数组
double[,] TwoDimensionalArray = {{ 1.0, 2.0, double.NaN },{ 3.0, 4.0, 5.0 },{ double.NaN, 6.0, 7.0 }};
3.3、不规则数组 Jagged Array
也叫交错数组。不同长度的行,可以使用 Jagged Array。使用Jagged Array时,每行的长度可以不同,这在某些情况下比使用List<List>更灵活。选择哪种方式取决于你的具体需求,比如是否需要动态改变行的长度。
int[][] jaggedArray = new int[3][]; // 声明一个三行的数组,每行的长度可以根据需要进行定义和修改。
jaggedArray[0] = new int[] { 1, 2 }; // 第一行有两个元素
jaggedArray[1] = new int[] { 3, 4, 5 }; // 第二行有三个元素
jaggedArray[2] = new int[] { 6 }; // 第三行有一个元素
四、列表 List
4.1、一维列表
List<double> OneDimensionalList = new List<double> { 1.8, 2.9, 3.7, 4.5 , double.NaN };
List<int> OneDimensionalList = new List<int> { 1, 2, 3, 4, 5 };
List<string> OneDimensionalList = new List<string> { "Alice", "Bob", "Charlie" };
List<object> OneDimensionalList = new List<object> { 1, "Hello", 3.14 };
4.2、二维列表
严格不叫二维,但可以等效数组一样操作,姑且这么称呼。
List<List<int>> TwoDimensionalList = new List<List<int>>() {new List<int> { 1, 2, 3 },new List<int> { 4, 5, 6 },new List<int> { 7, 8, 9 },
};List<List<int>> TwoDimensionalList = new List<List<int>>();
TwoDimensionalList.Add(new List<int> { 1, 2, 3 });// 添加行
TwoDimensionalList.Add(new List<int> { 4, 5, 6 });
TwoDimensionalList.Add(new List<int> { 7, 8, 9 });
五、数组和列表使用 LINQ的操作和运算
5.1、一维 LIST 删除所有含 double.NaN 的行
List<double> OneDimensionalList = new List<double> { 1.8, 2.9, 3.7, 4.5 , double.NaN, 168 };
OneDimensionalList.RemoveAll(n => double.IsNaN(n));
5.2、一维 LIST 删除所有含指定数据的行
List<string> OneDimensionalList = new List<string> {
"Alice TWO Y",
"Bob WO",
"Charlie who Y"
"Hi LIST"
};
foreach (string row in OneDimensionalList)
{string[] SplitString = row.Split(' ');//行数据分裂if (SplitString[2] == "Y")//第3个字符等于Y的{OneDimensionalList.RemoveAll(x => x == row);//删除第3列等于字符Y的行}
}// 在指定位置插入元素(例如,在索引为2的位置插入7)OneDimensionalList.Insert(2, 7);// 移除指定值的第一个匹配项(如果有的话)
OneDimensionalList.Remove(7); // 如果7存在,则移除它
OneDimensionalList.RemoveAt(0); // 移除索引为0的元素,即原本的1
OneDimensionalList.Clear(); // 清空列表中的所有元素
bool containsThree = OneDimensionalList.Contains(3); //检查元素是否存在于列表中,如果3存在,返回true,否则返回false
int count = OneDimensionalList.Count; // 获取列表中的元素数量
5.3、一维 LIST 获得非重复的数列
5.3.1、使用 LINQ 的 Distinct 方法
List<string> OneDimensionalList = new List<string> {
"Alice TWO Y",
"Bob WO",
"Charlie who Y"
"Hi LIST"
"Charlie who Y"
};
OneDimensionalList = OneDimensionalList.Distinct().ToList();//返回非重复的数列
OneDimensionalList.Sort();//排序
5.3.2、使用 HashSet 方法
List<string> OneDimensionalList = new List<string> {
"Alice TWO Y",
"Bob WO",
"Charlie who Y"
"Hi LIST"
"Charlie who Y"
};
HashSet<string> hs = new HashSet<string>(OneDimensionalList); //HashSet存储一组不重复的元素
OneDimensionalList = hs.ToList();
OneDimensionalList.Sort();//排序
5.4、二维 LIST 的声明、初始化和访问
//声明新的二维列表
List<List<int>> twoDimensionalList = new List<List<int>>();//初始化二维列表 List ,添加 3 行 4 列
twoDimensionalList.Add(new List<int> { 1, 2, 3, 4 });//添加一维 List 元素
twoDimensionalList.Add(new List<int> { 5, 6, 7, 8 });
twoDimensionalList.Add(new List<int> { 9, 10, 11, 12 });// 获取二维列表行数
int rowCount = twoDimensionalList.Count;// 获取二维列表列数
int columnCount = twoDimensionalList.Count == 0 ? 0 : twoDimensionalList[0].Count;
int cols = twoDimensionalList.Select(row => row.Count).Max(); // 假设所有行长度相同,如果不是,需要处理不一致的情况//简单访问二维 List 元素或值
int element = twoDimensionalList[0][1]; // 获取第一行、第二列元素的值(行索引为 0,列索引为 1),值为 2
Console.WriteLine(element);
twoDimensionalList[1][2] = 5; // 将第二行第三列的元素修改为5//遍历二维列表,控制台输出
foreach (List<int> row in twoDimensionalList)
{foreach (int item in row){Console.Write(item + " ");//控制台调试显示数据}Console.WriteLine();
}foreach (var row in twoDList)
{foreach (var item in row){Console.Write(item + " ");}Console.WriteLine(); // 换行,用于分隔各行
}//遍历二维列表,修改数据,控制台输出,
for (int i = 0; i < rowCount; i++)
{for (int j = 0; j < columnCount; j++){twoDimensionalList[i][j] += 1;//修改数据,二维数据每个数加 1}
}//二维数组或 LIST 控制台显示,采用 Join 输出行数据
foreach (var row in TwoDimensionalArray)
{Console.WriteLine(string.Join(", ", row));
}foreach (var row in TwoDimensionalList)
{Console.WriteLine(string.Join(", ", row));
}//删除列表行,索引默认从零开始
twoDimensionalList.RemoveAt(2);//删除索引 2 的行数据//删除集合中一定范围内的元素,索引默认从零开始
twoDimensionalList.RemoveRange(0, 2);//从索引 0 开始,删除 2 行数据//在列表索引前插入元素(在第二行之前插入)
twoDimensionalList.Insert(1, new List<int> { 15, 16, 17, 18 });//在特定位置插入新行,初始化为 0(在第一行之前插入)
twoDList.Insert(0, new List<int>(Enumerable.Repeat(0, cols)));//初始化一个具有特定大小和内容的二维List
int rows = 3;
int cols = 4;
List<List<int>> twoDList = new List<List<int>>();
for (int i = 0; i < rows; i++)
{twoDList.Add(new List<int>(Enumerable.Repeat(0, cols))); // 添加一个新行,初始化为0
}
5.5、二维 LIST 使用 LINQ 筛选掉包含 double.NaN 的行及空行
List<List<double>> TwoDimensionalList = new List<List<double>>(){new List<double> { 1.8, 2.9, 3.7, 4.5, 9.9, 168 },new List<double> { 1.8, 2.9, 3.7, 4.5, double.NaN, 168 },new List<double> { }, // 空行new List<double> { 2.8, 3.9, 4.7, 5.5, double.NaN, 668, },new List<double> { 1.8, 2.9, 3.7, 4.5, 9.9, 168 }};TwoDimensionalList = TwoDimensionalList.Where(row => !row.Contains(double.NaN) && row.Any()).ToList();//删除存在 double.NaN 的行及空行// TwoDimensionalList = TwoDimensionalList.Where(row => row.Any()).ToList();//删除空行
// TwoDimensionalList = TwoDimensionalList.Where(row => !row.Contains(double.NaN)).ToList();//删除存在 double.NaN 的行foreach (var row in TwoDimensionalList) { Console.WriteLine(string.Join(" ", row)); }//var filteredData = twoDimensionalList.Where(row => !row.Contains(double.NaN)).ToArray();
5.6、二维 list<list> 删除 某列值相同的行
5.6.1、保留第一列数据相同的首行的 LIST
List<List<int>> list1 = new List<List<int>>{new List<int> { 1, 2 }, //第一列数据相同的行new List<int> { 3, 4 },new List<int> { 1, 5 }, //第一列数据相同的行new List<int> { 6, 7 },new List<int> { 1, 6 } //第一列数据相同的行};// 检查第一列(索引为0)int columnIndex = 0;var seen = new HashSet<int>(); // 用于跟踪已经看到的值for (int i = 0; i < list1.Count; i++) // 从 0 索引开始遍历行{if (!seen.Add(list1[i][columnIndex])) // 如果值已存在,则删除当前行{list1.RemoveAt(i); // 如果值已存在,则删除当前行}}foreach (var row in list1){Console.WriteLine(string.Join(", ", row));}Console.WriteLine();
结果:
1, 2
3, 4
6, 7
5.6.2、保留第一列数据相同的最后一行的 LIST
List<List<int>> list2 = new List<List<int>>{new List<int> { 1, 2 }, //第一列数据相同的行new List<int> { 3, 4 },new List<int> { 1, 5 }, //第一列数据相同的行new List<int> { 6, 7 },new List<int> { 1, 6 } //第一列数据相同的行};int columnIndex = 0;// 检查第一列(索引为0)var uniqueValues = new HashSet<int>();for (int i = list2.Count - 1; i >= 0; i--) // 从后往前遍历以便安全删除元素{if (!uniqueValues.Add(list2[i][columnIndex])){list2.RemoveAt(i); // 如果值已存在,则删除当前行}}foreach (var row in list2){Console.WriteLine(string.Join(", ", row));}Console.WriteLine();
结果:
3, 4
6, 7
1, 6
5.6.3、使用LINQ去重,保留第一列数据相同的首行的 LIST
List<List<int>> list3 = new List<List<int>>{new List<int> { 1, 2 }, //第一列数据相同的行new List<int> { 3, 4 },new List<int> { 1, 5 }, //第一列数据相同的行new List<int> { 6, 7 },new List<int> { 1, 6 } //第一列数据相同的行};int columnIndex = 0;// 检查第一列(索引为0)list3 = list3.GroupBy(x => x[columnIndex]).Select(g => g.First()).ToList(); // 去重并保留第一个遇到的元素。foreach (var row in list3){Console.WriteLine(string.Join(", ", row)); // 输出结果。}
结果:
1, 2
3, 4
6, 7
List<List<int>> list = new List<List<int>>(){new List<int> { 1, 2 }, //第一列数据相同的行new List<int> { 3, 4 },new List<int> { 1, 5 }, //第一列数据相同的行new List<int> { 6, 7 },new List<int> { 1, 6 }, //第一列数据相同的行new List<int> { 1, 2, 3 },//第一列数据相同的行new List<int> { 4, 5, 6 },new List<int> { 1, 7, 8 }, //第一列数据相同的行new List<int> { 9, 10, 11 }};int columnIndex = 0;// 检查第一列(索引为0)// 只保留每组中的第一个元素(如果有重复值的话)list = list.Where((item, index) => index == list.FindIndex(x => x[columnIndex] == item[columnIndex])) .ToList();// 打印结果以验证foreach (var sublist in list){Console.WriteLine(string.Join(", ", sublist));}return;
结果:
1, 2
3, 4
6, 7
4, 5, 6
9, 10, 11
5.6.4、使用LINQ去重,移除 LIST 第一列所有数据相同的行
List<List<int>> listOfLists = new List<List<int>>(){new List<int> { 1, 2, 3 },new List<int> { 4, 5, 6 },new List<int> { 1, 7, 8 }, // 这里有两行包含1new List<int> { 9, 10, 11 }};// 需要检查的列索引(例如第0列)int columnIndex = 0;// 获取该列的所有值及其出现的次数var duplicates = listOfLists.GroupBy(list => list[columnIndex]).Where(group => group.Count() > 1).Select(group => group.Key).ToList();// 移除所有包含重复值的行listOfLists.RemoveAll(list => duplicates.Contains(list[columnIndex]));// 打印结果以验证foreach (var list in listOfLists){Console.WriteLine(string.Join(", ", list));}
结果:
4, 5, 6
9, 10, 11
六、二维 LIST 和二维数组相互转换
6.1、二维数组 int[,] 与 交错数组 int[][] 的区别
二维 LIST 转换为二维数组 double[][] arrayOfArrays,严格说不是二维数组。
关于 double[][] 是交错数组,它其实是一个 double[] 里嵌套着double[],可以理解为 (double[])[]。
对于int[,],数组的行数和列数如下:
int[,] a=new int[2,3];
int row = a.GetLength(0); //第一维的长度(即行数) row=2;
int col = a.GetLength(1); //第二维的长度(即列数)col=3;
int length = a.Length;//二维数组的总长度 lenth=6;
对于交错数组 int[][]
int[][] a = { new int[] { 1, 5 }, new int[] { 7, 3 }, new int[] { 3, 5 } };//accounts.Length表示数组a中一维数组的个数3for (int i = 0; i < accounts.Length; i++){int col = accounts[i].Length;//表示一维数组中其中一维数组的个数,看上面数组a,那么这里数组的个数就为2int sum = 0;for (int j = 0; j < col; j++){sum = sum + accounts[i][j];} }
6.2、二维 LIST 转换为 交错数组
List<List<double>> TwoDimensionalList = new List<List<double>>
{new List<double> { 1, 2, 3 },new List<double> { 4, 5, 6 },new List<double> { 7, 8, 9 }
};
//此二维数组不是double[,] arrayOfArrays 数组
double[][] arrayOfArrays = TwoDimensionalList.Select(row => row.ToArray()).ToArray();
6.3、二维 LIST 转换为二维数组
6.3.1、直接转换
List<List<string>> lists = new List<List<string>>()
{new List<string>() { "C", "C++" },new List<string>() { "Java", "Kotlin" }
};string[,] arrays = new string[lists.Count, lists[0].Count];
for (int i = 0; i < lists.Count; i++)
{for (int j = 0; j < lists[i].Count; j++){arrays[i, j] = lists[i][j];}
}//控制台输出二维数组结果
foreach (var array in arrays)
{Console.WriteLine(String.Join(", ", array));
}//控制台输出结果(取数组的行列大小)
for (int i = 0; i < arrays.GetLength(0); i++)
{for (int j = 0; j < arrays.GetLength(1); j++){Console.Write(arrays[i, j] + " ");}Console.WriteLine();
}//控制台输出结果(取lists的行列大小)
int rows = lists.Count;
int cols = lists[0].Count;
for (int i = 0; i < rows; i++)
{for (int j = 0; j < cols; j++){Console.Write(arrays[i, j] + " ");}Console.WriteLine();
}
6.3.2、使用交错数组作为转换过程
List<List<double>> TwoDimensionalList = new List<List<double>>
{
new List<double> { 1, 2, 3 },
new List<double> { 4, 5, 6 },
new List<double> { 7, 8, 9 }
};
//先转换为行列规则的交错数组形式 double[][] arrayOfArrays
double[][] arrayOfArrays = TwoDimensionalList.Select(row => row.ToArray()).ToArray();int rows = arrayOfArrays.Length;//交错数组行数
int cols = arrayOfArrays.Max(array => array.Length);//交错数组列数
double[,] multiDimArray=new double[rows, cols];//声明二维数组
//转换为二维数组
for (int i = 0; i < rows; i++)
{for (int j = 0; j < cols; j++){multiDimArray[i, j] = arrayOfArrays[i][j]; // 直接赋值}
}
//控制台输出结果
for (int i = 0; i < multiDimArray.GetLength(0); i++)
{for (int j = 0; j < multiDimArray.GetLength(1); j++){Console.Write(multiDimArray[i, j] + " ");}Console.WriteLine();
}
6.3.3、使用 List<数组>作为转换过程
方法1
List<List<int>> TwoDimensionalList = new List<List<int>>() {new List<int> { 1, 2, 3 },new List<int> { 4, 5, 6 },new List<int> { 7, 8, 9 }};
// 将List<List<int>>转换为List<int[]>
var listOfArrays = TwoDimensionalList.Select(row => row.ToArray()).ToList();int[,] array = new int[listOfArrays.Count, listOfArrays[0].Length];
for (int i = 0; i < listOfArrays.Count; i++)
{for (int j = 0; j < listOfArrays[i].Length; j++){array[i, j] = listOfArrays[i][j];}
}// 输出结果验证
for (int i = 0; i < array.GetLength(0); i++)
{for (int j = 0; j < array.GetLength(1); j++){Console.Write(array[i, j] + " ");}Console.WriteLine();
}
方法2
// 示例二维ListList<List<int>> listOfLists = new List<List<int>>{new List<int> { 1, 2, 3 },new List<int> { 4, 5, 6 },new List<int> { 7, 8, 9 }};// 将List<List<int>>转换为List<int[]>List<int[]> listOfArrays = new List<int[]>();foreach (var list in listOfLists){listOfArrays.Add(list.ToArray());}// 然后将List<int[]>转换为二维数组int[,]int[,] array = new int[listOfArrays.Count, listOfArrays[0].Length];for (int i = 0; i < listOfArrays.Count; i++){for (int j = 0; j < listOfArrays[i].Length; j++){array[i, j] = listOfArrays[i][j];}}// 输出结果验证for (int i = 0; i < array.GetLength(0); i++){for (int j = 0; j < array.GetLength(1); j++){Console.Write(array[i, j] + " ");}Console.WriteLine();}
6.4、使用 LINQ,简洁地将二维数组 T[,] 转换为二维 List<List>
int[,] TwoDimensionalArray = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
int rowCount = TwoDimensionalArray.GetLength(0);
int colCount = TwoDimensionalArray.GetLength(1);List<List<int>> TwoDimensionalList = Enumerable.Range(0, rowCount).Select(i => Enumerable.Range(0, colCount).Select(j => TwoDimensionalArray[i, j]).ToList()).ToList();
七、字符串分割成 List
7.1、字符串分割成 List<字符串>
string input = "apple,banana,cherry";
List<string> result = new List<string>(input.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries));
7.2、字符串分割为 List 或 T 为其他数值类型
string input = "1,2,3,4,5";
List<int> result = input.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToList();foreach (var item in result)
{Console.WriteLine(item);
}
相关文章:
C# 数组和列表的基本知识及 LINQ 查询
数组和列表的基本知识及 LINQ 查询 一、基本知识二、引用命名空间声明三、数组3.1、一维数组3.2、二维数组3.3、不规则数组 Jagged Array 四、列表 List4.1、一维列表4.2、二维列表 五、数组和列表使用 LINQ的操作和运算5.1、一维 LIST 删除所有含 double.NaN 的行5.2、一维 LI…...
大厂面试题备份20250201
20250201 面试策略 如果三面往后遇到传说中让人忍受不了的业余面试官,就舔着苟过去,入职大概率见不着他,但一二面遇到,反问环节就主动说不够match,让释放流程。 机器/深度学习 百面机器学习 5.4 通用CS 计算机网…...
w191教师工作量管理系统的设计与实现
🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…...
Git 版本控制:基础介绍与常用操作
目录 Git 的基本概念 Git 安装与配置 Git 常用命令与操作 1. 初始化本地仓库 2. 版本控制工作流程 3. 分支管理 4. 解决冲突 5. 回退和撤销 6. 查看提交日志 前言 在软件开发过程中,开发者常常需要在现有程序的基础上进行修改和扩展。但如果不加以管理&am…...
讲清逻辑回归算法,剖析其作为广义线性模型的原因
1、逻辑回归算法介绍 逻辑回归(Logistic Regression)是一种广义线性回归分析模型。虽然名字里带有“回归”两字,但其实是分类模型,常用于二分类。既然逻辑回归模型是分类模型,为什么名字里会含有“回归”二字呢?这是因为其算法原…...
数据结构(1)——算法时间复杂度与空间复杂度
目录 前言 一、算法 1.1算法是什么? 1.2算法的特性 1.有穷性 2.确定性 3.可行性 4.输入 5.输出 二、算法效率 2.1衡量算法效率 1、事后统计方法 2、事前分析估计方法 2.2算法的复杂度 2.3时间复杂度 2.3.1定义 2.3.2大O渐进表示法 2.3.3常见时间复…...
K8s运维管理平台 - xkube体验:功能较多
目录 简介Lic安装1、需要手动安装MySQL,**建库**2、启动命令3、[ERROR] GetNodeMetric Fail:the server is currently unable to handle the request (get nodes.metrics.k8s.io qfusion-1) 使用总结优点优化 补充1:layui、layuimini和beego的详细介绍1.…...
spring源码阅读系列文章目录
对于spring认识首先要了解 spring相关概念术语,然后是如下的几句话牢记并反射出来: Bean怎么来的,通过BeanDefinitionBeanDefinition有Spring框架内置的,有手动定义或者自动配置扫描出来的(写个Demo工程)B…...
快速提升网站收录:利用网站新闻发布功能
本文转自:百万收录网 原文链接:https://www.baiwanshoulu.com/63.html 利用网站新闻发布功能快速提升网站收录是一个有效的策略。以下是一些具体的建议,帮助你更好地利用这一功能: 一、保持新闻更新频率 搜索引擎尤其重视网站的…...
【14】WLC3504 HA配置实例
1.概述 本文档使用 Cisco WLC 3504 实现无线控制器的高可用性。这里所指的HA是指WLC设备box-to-box的冗余。换句话说,即1:1的设备冗余,其中一个 WLC 将处于Active活动状态,而第二个 WLC 将处于Standby-hot热待机状态,通过RP冗余端口持续监控活动 WLC 的运行状况。两个 WLC…...
什么是LPU?会打破全球算力市场格局吗?
在生成式AI向垂直领域纵深发展的关键节点,一场静默的芯片革命正在改写算力规则。Groq研发的LPU(Language Processing Unit)凭借其颠覆性架构,不仅突破了传统GPU的性能天花板,更通过与DeepSeek等国产大模型的深度协同&a…...
智慧物业管理系统实现社区管理智能化提升居民生活体验与满意度
内容概要 智慧物业管理系统,顾名思义,是一种将智能化技术融入社区管理的系统,它通过高效的手段帮助物业公司和居民更好地互动与沟通。首先,这个系统整合了在线收费、停车管理等功能,让居民能够方便快捷地完成日常支付…...
Vue3 表单:全面解析与最佳实践
Vue3 表单:全面解析与最佳实践 引言 随着前端技术的发展,Vue.js 已经成为最受欢迎的前端框架之一。Vue3 作为 Vue.js 的最新版本,带来了许多改进和新的特性。其中,表单处理是 Vue 应用中不可或缺的一部分。本文将全面解析 Vue3 …...
MySQl的日期时间加
MySQL日期相关_mysql 日期加减-CSDN博客MySQL日期相关_mysql 日期加减-CSDN博客 raise notice 查询目标 site:% model:% date:% target:%,t_shipment_date.site,t_shipment_date.model,t_shipment_date.plant_date,v_date_shipment_qty_target;...
实战:如何利用网站日志诊断并解决收录问题?
本文转自:百万收录网 原文链接:https://www.baiwanshoulu.com/50.html 利用网站日志诊断并解决收录问题是一种非常有效的方法。以下是一个实战指南,帮助你如何利用网站日志来诊断并解决网站的收录问题: 一、获取并分析网站日志 …...
每日一题——有效括号序列
有效括号序列 题目描述数据范围:复杂度要求: 示例题解代码实现代码解析1. 定义栈和栈操作2. 栈的基本操作3. 主函数 isValid4. 返回值 时间和空间复杂度分析 题目描述 给出一个仅包含字符 (, ), {, }, [, ] 的字符串,判断该字符串是否是一个…...
PyTorch数据建模
回归分析 import torch import numpy as np import pandas as pd from torch.utils.data import DataLoader,TensorDataset import time strat = time.perf_counter()...
OpenAI 实战进阶教程 - 第二节:生成与解析结构化数据:从文本到表格
目标 学习如何使用 OpenAI API 生成结构化数据(如 JSON、CSV 格式)。掌握解析数据并导出表格文件的技巧,以便适用于不同实际场景。 场景背景 假设你是一名开发人员,需要快速生成一批产品信息列表(如名称、价格、描述…...
二叉树--链式存储
1我们之前学了二叉树的顺序存储(这种顺序存储的二叉树被称为堆),我们今天来学习一下二叉树的链式存储: 我们使用链表来表示一颗二叉树: ⽤链表来表⽰⼀棵⼆叉树,即⽤链来指⽰元素的逻辑关系。通常的⽅法是…...
Windows 中的 WSL:开启你的 Linux 之旅
今天在安装windows上安装Docker Desktop的时候,遇到了WSL。下面咱们就学习下。 欢迎来到涛涛聊AI 一、什么是 WSL? WSL,全称为 Windows Subsystem for Linux,是微软为 Windows 系统开发的一个兼容层,它允许用户在 Win…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...
day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...
