Skip to content

1290: python之可变列表

题目

题目描述

本题中,你提交的代码将被作为名为"src.hpp"的头文件而被提交,评测主程序将会include该头文件并检验该头文件的正确性。

完成一个极简的 python 中的列表,int 版本。核心功能是列表为 python 中的可变类型。即,这个列表的 operator= 以及拷贝构造都是共享底层数据的行为。

保证列表只有一维,即不会出现列表套列表。

关于你所要写的特性的说明:python中的list2 = list1并没有进行列表的克隆,而只是将list2同样指向了list1(传引用),因此改变了这两个列表中的任何一个内容都会同样地反映在另一个列表上。这是python编程中的一个大坑,你可以看到好多人在使用python列表的时候都栽在这上过了。python - List changes unexpectedly after assignment. Why is this and how can I prevent it? - Stack Overflow 但是你现在需要实现python列表的这个特性。

目的:阅读测试样例,完成一个极简的 python 中的列表,int 版本。核心功能是可变列表。

样例测试程序

```cpp

include "src.hpp"

include

using namespace std; int main() { pylist ls; ls.append(1); ls.append(2); pylist ls2 = ls; pylist ls3; ls3.append(1); ls3.append(2);

cout << ls << endl;
cout << ls2 << endl;
cout << ls3 << endl;
cout << endl;

ls[1] = 1;
cout << ls << endl;
cout << ls2 << endl;
cout << ls3 << endl;
cout << endl;

ls2 = ls3;
cout << ls << endl;
cout << ls2 << endl;
cout << ls3 << endl;
cout << endl;

ls[1] = 5;
ls2[0] = 6;
ls3[1] = 7;
cout << ls << endl;
cout << ls2 << endl;
cout << ls3 << endl;
cout << endl;

cout << ls2.pop() << endl;
cout << ls2.pop() << endl;
cout << string(ls3) << endl;

return 0;

} ```

输入格式

输出格式

样例输入

样例输出

``` [1, 2] [1, 2] [1, 2]

[1, 1] [1, 1] [1, 2]

[1, 1] [1, 2] [1, 2]

[1, 5] [6, 7] [6, 7]

7 6 []

```

数据范围

Oops! 本题目还没有解答!

助教老师们编题的速度,已经超过了解题的速度!

OJ翻了一新,但本解答集还大多用的是2017-2019级,甚至更早的同学们贡献的答案。

如果你已经AC了,可以的话,请您参考添加页面,与大家一起分享你的题解!