如何合并两个列表以保持元素索引对应一致?
按索引合并两个列表的解决方案
你需要的是将两个列表按索引位置一一配对,Concat()方法只是简单地把第二个列表追加到第一个列表末尾,完全不符合你的需求。下面针对常见场景给出实现方案:
C# 实现
使用Enumerable.Zip()方法可以直接将两个列表中同索引的元素配对,返回新的序列:
// 示例列表 List<string> names = new List<string> { "Alice", "Bob", "Charlie" }; List<int> values = new List<int> { 25, 30, 35 }; // 合并为元组列表(简洁易用) var mergedTuples = names.Zip(values, (name, value) => (Name: name, Value: value)).ToList(); // 若需要自定义类型,可直接映射 public class Item { public string Name { get; set; } public int Value { get; set; } } var mergedItems = names.Zip(values, (n, v) => new Item { Name = n, Value = v }).ToList();
Python 实现
Python内置的zip()函数即可完成同索引配对:
names = ["Alice", "Bob", "Charlie"] values = [25, 30, 35] # 合并为元组列表 merged = list(zip(names, values)) # 若需要键值对,可转成字典(需确保names中元素唯一) merged_dict = dict(zip(names, values))
注意事项
- 如果两个列表长度不一致,
Zip()(或Python的zip())只会处理到较短列表的长度,超出的元素会被忽略。如果需要处理不等长场景,需额外编写逻辑补全缺失的元素。
内容的提问来源于stack exchange,提问作者German Avakjan
相关产品推荐
相关产品推荐

