Python:如何将数组[5,6,7,8,9]重新索引为-2到2的索引
当然可以实现!不同编程语言的实现方式略有不同,下面我给你几个常用语言的具体方案:
Python实现
Python原生列表的默认负索引是从数组末尾反向计数的,不符合你的需求,但我们可以通过自定义一个简单的包装类来实现自定义索引映射:
class CustomIndexedArray: def __init__(self, original_array): self.original = original_array # 建立目标索引到原数组索引的映射关系 self.index_mapping = {-2: 0, -1: 1, 0: 2, 1: 3, 2: 4} def __getitem__(self, idx): if idx in self.index_mapping: return self.original[self.index_mapping[idx]] raise IndexError("有效索引范围:-2 到 2") def __setitem__(self, idx, value): if idx in self.index_mapping: self.original[self.index_mapping[idx]] = value else: raise IndexError("有效索引范围:-2 到 2") # 使用示例 original_array = [5, 6, 7, 8, 9] custom_array = CustomIndexedArray(original_array) print(custom_array[-2]) # 输出:5 print(custom_array[0]) # 输出:7 print(custom_array[2]) # 输出:9
JavaScript实现
JavaScript的数组本质是特殊的对象,你可以直接为它赋值自定义的负索引(注意原生数组的length属性不会受负索引影响)。如果只是需要实现指定索引的访问,最简单的方式是手动映射:
let array = [5, 6, 7, 8, 9]; // 直接设置自定义索引对应的值 array[-2] = 5; array[-1] = 6; array[0] = 7; array[1] = 8; array[2] = 9; // 测试访问 console.log(array[-2]); // 输出:5 console.log(array[0]); // 输出:7 console.log(array[2]); // 输出:9
如果想要更严谨的封装,也可以直接创建一个对象来模拟这个自定义索引结构:
const customArray = { "-2": 5, "-1": 6, "0": 7, "1": 8, "2": 9 }; console.log(customArray[-2]); // 输出:5
PHP实现
PHP数组天然支持自定义键名,直接创建关联数组就能完美满足你的需求:
$array = [ -2 => 5, -1 => 6, 0 => 7, 1 => 8, 2 => 9 ]; echo $array[-2]; // 输出:5 echo $array[0]; // 输出:7 echo $array[2]; // 输出:9
内容的提问来源于stack exchange,提问作者Edamame
相关产品推荐
相关产品推荐

