BUPT复试专题—Python List(2014)
题目描述
在Python中,List (列表)是一种非常重要的数据结构。它与C/C++/Java中的 数组有些类似,但支持添加新元素时的动态扩展。在这个问题中,你需要处理如下 的几种对List的操作。
• L=[]:将名字为L的List淸空。在这里,List的名字是长度为1到10之间的字符串(只包括大小写字母)。如果L原来不存在,这个语句相当于定义了一个名字为L的空列表。
• L.append(x):向L的末端插入元素X。为方便起见,这里的x只会是 [0,65536]之间的整数。
• L. sort ():将L中的元素按升序排序。
• L[id]:返回L中下标为id(>=0)的值。下标是从0开始计数的。
给定若干Python语句,你的任务是对于每个形如L[id]的语句,输出它返回的值。
• L=[]:将名字为L的List淸空。在这里,List的名字是长度为1到10之间的字符串(只包括大小写字母)。如果L原来不存在,这个语句相当于定义了一个名字为L的空列表。
• L.append(x):向L的末端插入元素X。为方便起见,这里的x只会是 [0,65536]之间的整数。
• L. sort ():将L中的元素按升序排序。
• L[id]:返回L中下标为id(>=0)的值。下标是从0开始计数的。
给定若干Python语句,你的任务是对于每个形如L[id]的语句,输出它返回的值。
输入
输入数据包含多组测试数据。请注意各组测试数据之间是相互独立的。
输入的第一行是一个整数T(T<=100),表示测试数据的组数。
每组测试数据第一行是语句的数量N(<=100)。接下来N行,每行一个python 语句。测试数据保证只会出现上述四种语句,语句中间不会出现空格。一个List在被使用前一定会被先定义。
输入的第一行是一个整数T(T<=100),表示测试数据的组数。
每组测试数据第一行是语句的数量N(<=100)。接下来N行,每行一个python 语句。测试数据保证只会出现上述四种语句,语句中间不会出现空格。一个List在被使用前一定会被先定义。
输出
对于每个查询,输出査找的L[id]的值。如果id超出了当前List的下标范围, 输出一行ERROR。
样例输入
2
5
a=[]
a.append(0)
a.append(1)
a[0]
a[1]
8
lista=[]
lista.append(123)
lista.append(65)
lista[0]
lista.sort()
lista[0]
listb=[]
listb[0]
样例输出
0
1
123
65
ERROR
来源
这个题的陷阱在于每次操作的数组不一定只有一个
#include <iostream> #include <cstdio> #include <string> #include <algorithm> using namespace std; struct pylist { int donser[105]; string temp; int now; }; int sor(const void *a,const void *b) { return *(int *)a-*(int *)b; //小到大 } int main() { int T,n; cin>>T; while(T--) { cin>>n; //int donser[105]; pylist real_list[105]; for(int i=0;i<20;i++) { real_list[i].temp=""; real_list[i].now=-1; for(int j=0;j<100;j++) real_list[i].donser[j]=0; } //int now=-1; while(n--) { string temp; cin>>temp; int pos1=temp.find('.'),pos2=temp.find('['),pos3=temp.find('='),pos=0; int shit=pos1; if(shit<0) shit=pos2; if(pos3>0) shit=pos3; string real_str=temp.substr(0,shit); //cout<<"*"<<real_str<<endl; if(real_list[0].temp!="") { int i=0,temp_lable=0; while(real_list[i].temp!=""&&!temp_lable) { //cout<<"+"<<real_list[i].temp<<" "<<real_str<<endl; if(real_list[i].temp==real_str) { pos=i; temp_lable=1; } i++; } if(temp_lable==0) { pos=i; real_list[i].temp=real_str; } } //cout<<"*"<<pos<<endl; if(real_list[0].temp=="") real_list[0].temp=real_str; if(pos2!=-1)////////lista[num] or listb=[] { if(temp[pos2+1]==']') { real_list[pos].now=-1; } else { int i=pos2+1;int num=temp[i]-'0';i++; while(1) { if(temp[i]>='0'&&temp[i]<='9'&&i<temp.size()) { num=num*10+(temp[i]-'0'); i++; } else break; } if(real_list[pos].now<num) cout<<"ERROR"<<endl; else cout<<real_list[pos].donser[num]<<endl; } } if(pos1!=-1&&temp[pos1+5]!='(')///////////append() { int i=pos1+8;int num=temp[i]-'0';i++; while(1) { if(temp[i]>='0'&&temp[i]<='9'&&i<temp.size()) { num=num*10+(temp[i]-'0'); i++; } else break; } real_list[pos].now++; real_list[pos].donser[real_list[pos].now]=num; } if(pos1!=-1&&temp[pos1+5]=='('&&real_list[pos].now!=-1)////sort() { qsort(real_list[pos].donser,real_list[pos].now+1,sizeof(int),sor); } } } return 0; }