11.设计并实现一个数组类,要求能够把包含数字的列表、元组或 range对象转换为数组,并能够修改数组中指定位置上的元素值。
时间: 2024-02-20 12:56:00 浏览: 92
以下是一个简单的数组类的实现,实现了将列表、元组、range对象转换为数组,并能够修改指定位置上的元素值:
```python
class Array:
def __init__(self, data):
if isinstance(data, list):
self.__data = data[:]
elif isinstance(data, tuple):
self.__data = list(data)
elif isinstance(data, range):
self.__data = list(data)
else:
raise ValueError("Invalid data type")
def __getitem__(self, index):
return self.__data[index]
def __setitem__(self, index, value):
self.__data[index] = value
def __len__(self):
return len(self.__data)
def __str__(self):
return str(self.__data)
```
在上面的代码中,我们定义了一个数组类`Array`,在构造方法中,我们首先判断输入的数据类型,如果是列表、元组或range对象,则将其转换为列表,否则抛出异常。我们使用私有属性`__data`来保存列表数据,使用`__getitem__`和`__setitem__`方法来实现数组元素的访问和修改,使用`__len__`方法来返回数组长度,使用`__str__`方法来返回数组的字符串表示。
使用方法如下:
```python
a1 = Array([1, 2, 3])
a2 = Array((4, 5, 6))
a3 = Array(range(3))
print(a1) # 输出:[1, 2, 3]
print(a2) # 输出:[4, 5, 6]
print(a3) # 输出:[0, 1, 2]
a1[0] = 0
a2[1] = 1
a3[2] = 2
print(a1) # 输出:[0, 2, 3]
print(a2) # 输出:[4, 1, 6]
print(a3) # 输出:[0, 1, 2]
```
在上面的代码中,我们首先创建了三个数组对象`a1`、`a2`和`a3`,分别使用列表、元组和range对象作为输入数据。然后我们修改了数组中的某些元素,并使用`print`函数输出数组的字符串表示。
阅读全文