设计并实现一个数组类,要求能够把包含数字的列表、元组或 range 对象转换为数组, 能够使用包含整数的列表作为下标同时返回多个位置上的元素值。
时间: 2024-12-13 15:26:18 浏览: 12
设计一个数组类(ArrayAdapter),可以满足上述需求,我们可以使用 Python 的内置 `list` 类型作为基础,并添加一些额外的功能:
```python
class ArrayAdapter:
def __init__(self, iterable):
if isinstance(iterable, (list, tuple)):
self.array = list(iterable)
elif isinstance(iterable, range):
self.array = list(range(iterable.start, iterable.stop, iterable.step))
else:
raise ValueError("Unsupported type for initialization. Expected list, tuple or range.")
def as_array(self):
return self.array
def get(self, indices):
if not isinstance(indices, list) and not isinstance(indices, tuple):
indices = [indices]
result = []
for index in indices:
if isinstance(index, int) and index < len(self.array):
result.append(self.array[index])
else:
raise IndexError("Index out of range.")
return result
# 示例
adapter = ArrayAdapter([1, 2, 3, 4, 5])
print(adapter.as_array()) # 输出: [1, 2, 3, 4, 5]
print(adapter.get(0, 2)) # 输出: [1, 3]
```
这个 ArrayAdapter 类接受三种类型的输入:列表、元组或 range 对象,并将其转化为内部数组。`get` 方法用于按提供的整数列表索引获取多个元素。
阅读全文