一、列表基础(共11题,100.0分)

1
创建一个列表ls,包含元素为a,b,c,d

正确答案:
ls = [‘a’,’b’,’c’,’d’]
我的答案:
ls = [‘a’,’b’,’c’,’d’]
2
选取列表ls中0-3的元素,步长为2

正确答案:
ls[0:4:2]
我的答案:
ls[0:3:2]

批语
右侧索引值不包括
答案解析:

3
选取列表ls中0-3的元素,步长为-1
注意:step<0,从右往左切片,要求start>stop,从start开始,否则结果为空列表
start/stop值为负数,代表从左往右的倒数第几个元素,确保切片区间有值,否则为空表

正确答案:
ls[-1::-1]或者ls[3::-1]
我的答案:
ls[-1:-4:-1]

答案解析:

4
把元素v添加在列表ls的结尾

正确答案:
ls.append(‘v’)
我的答案:
ls.append(‘v’)
5
将值x插入列表ls的索引2处

正确答案:
ls.insert(2,’x’)
我的答案:
ls.insert(2,’x’)
6
返回ls中第一个指定值b的索引

正确答案:
ls.index(‘b’)
我的答案:
ls.index(‘b’)

7
删除列表ls中第一次找到的数值d

正确答案:
ls. remove(‘d’)
我的答案:
ls.remove(‘d’)

8
删除列表ls中的索引为1的元素

正确答案:
ls.pop(1)
我的答案:
ls.pop(1)

9
列表ls元素倒排序

正确答案:
ls.reverse()
我的答案:
ls.reverse()
10
列表ls元素正序排序

正确答案:
ls.sort()
我的答案:
ls.sort(reverse=False)

11
返回列表ls1中指定元素a的出现次数,ls1 = [‘a’, ‘b’, ‘c’, ‘d’,’a’, ‘b’, ‘c’, ‘a’,’c’]

正确答案:
ls1.count(‘a’)
我的答案:
ls1.count(‘a’)

二、元组&集合基础(共7题)

1
创建一个元组t,包含元素为a,b,c,d

正确答案:
t = (‘a’,’b’,’c’,’d’)
我的答案:
t = (‘a’,’b’,’c’,’d’)
答案解析:

2
返回t中第一个指定值c的索引

正确答案:
t.index(‘c’)
我的答案:
t.index(‘c’)
答案解析:

3
返回列表t1中指定元素a的出现次数,t1 = (‘a’, ‘b’, ‘c’, ‘d’,’a’, ‘b’, ‘c’, ‘a’,’c’)

正确答案:
t1.count(‘a’)
我的答案:
t1.count(‘a’)

答案解析:

4
存在列表ls = [1,2,3,4],元组t = (1,2,3,4),验证:列表和元组的元素能否修改?
将分别将ls和t中的值1修改为11,如果可以,显示修改后的结果,否则显示报错日志,结果提交代码运行截图

正确答案:
ls[0] = 11
print(ls)
元组不可修改
我的答案:
image.png

5
创建一个集合s,包含元素为a,b,c,d

正确答案:
s = {‘a’,’b’,’c’,’d’}
我的答案:
s = {‘a’,’b’,’c’,’d’}
答案解析:

6
将字符串’python’转换为集合

正确答案:
s = set(‘python’)
我的答案:
setPython = set(‘Python’)
7
存在列表ls = [11,3,4,6,7,2,3,4,5,7],完成以下操作:
1、对列表元素进行去重;
2、去重的结果转换为列表ls1;
3、对ls1进行倒序排序

正确答案:
s = set(ls)
ls1 = list(s)
ls1.reverse()

我的答案:
1、
only1 = set(ls)

2、
ls1 = list(only1)
3、
ls1.reverse()

三、流程+列表推导式(共6题)

1
将下面数组中的奇数变成它的平方,偶数保持不变,x = [ 1,2,3,4,8,7, 22,33, 88]

正确答案:
x = [ 1,2,3,4,8,7, 22,33, 88]
print(“原数据:”,x)
for i in range(len(x)):
if(x[i] % 2) !=0: # 判读第 i 个元素是否为奇数
x[i] = x[i] * x[i]
print(“处理后:”,x)
我的答案:
for i in range(len(x)) #遍历列表x

if(x[i]%2 == 0) #如果为偶数
continue #结束该轮循环,进入下一次循环

else: #如果不为偶数,即为奇数时

x[i] = x[i] * x[i] #让其变成它的平方
print(x)
2
给定两个列表ls1 = [‘a’,’b’,’c’,’d’],ls2 = [11,34,56,23],如何得到如下结果:
1、ls = [(‘a’,11),(‘b’,34),(‘c’,56),(‘d’,23)]
2、d = {‘a’:11,’b’:34,’c’:56,’d’:23}
可以多尝试几种方式

正确答案:
ls = list(zip(ls1,ls2))
d = dict(zip(ls1,ls2))

我的答案:
第一题:
ls1 = [‘a’,’b’,’c’,’d’]
ls2 = [11,34,56,23]
i = 0
ls = []
while i !=4: #ls1和ls2的都为4个元素
ls.insert(i,(ls1[i],ls2[i]))
i += 1

print(‘ls =’,ls)

第二题:
m = 0 #定义临时变量m,初始化值为0
d = {} #创建空字典d
for m in range (len(ls1)): #遍历0-3元素
d[ls1[m]] = ls2[m] #字典新增键值对

print(‘d =’,d)

3
利用列表推导式,筛选出0-100(包括100)的5的倍数

正确答案:
ls = [x for x in range(101) if x%5==0]
我的答案:
list3 = [n*5 for n in range(101)]
print(list_5)
_4

利用列表推导式,修改0-100(包括100)的值,如果为奇数,值加10;如果为偶数,值减10

正确答案:
ls = [ i-10 if i%2==0 else i+10 for i in range(101)]
我的答案:
list_4 = [z-10 if z % 2 == 0 else z+10 for z in range(101) ]

list_4
答案解析:

5
求1+2+3+4+5的值

正确答案:
sum = 0
i = 1
while i<6:
sum = sum+i
i = i+1
print(“sum is %d.” %sum)
我的答案:
print(1+2+3+4+5)
6
判断一个学生的考试成绩是否及格:如果成绩大于等于90分,则打印“优秀”;成绩大于等于60分,则打印“及格”,否则输出“不及格”。

正确答案:
score = float(input(“请输入成绩:”))
if score>=90:
print(“优秀”)
elif score>=60:
print(“及格”)
else:
print(“不及格”)
我的答案:
score = float(input(“学生的考试成绩:”))
if score >= 90:
print(‘优秀’)

elif score <60:
print(‘不及格’)

else:
print(‘及格’)

答案解析:

四、数组创建&操作(共18题,41.4分)

1

创建数组arr,输出结果如下所示:
image.png

正确答案:
ls = [[1,2,3,9,5,4],[0,3,7,4,8,1]]
arr= np.array(ls) #创建二维数组
arr

我的答案:
import numpy as np
arr = np.array([[1,2,3,9,5,4],[0,3,7,4,8,1]])
批语

2
查看数组arr的形状,即行数和列数
正确答案:
arr.shape
我的答案:
arr.shape
批语

3
查看数组arr的元素个数
正确答案:
arr.size
我的答案:
arr.size
批语

4
只查看数组arr的行数
正确答案:
len(arr)或arr.shape[0]
我的答案:
arr.shape[0]
批语

5
查看数组arr的列数
正确答案:
arr.shape[1]
我的答案:
arr.shape[1]

批语

6
将数组arr中元素的数据类型转换为float
正确答案:
arr1 = arr.astype(‘float’)
arr1.dtype
我的答案:
arr.astype(‘float’)
批语

7
将数组arr转换为3行4列的数组
正确答案:
arr.reshape(3,4)
我的答案:
arr.shape = (3,4)
批语

8
将数组arr转换为列表
正确答案:
arr.tolist()
我的答案:
arr.tolist()
批语

9
创建一个6*2的元素全为8的数组
正确答案:
np.full((6,2),8)
我的答案:
array268 = np.full((6,2),8)
批语

10
创建随机数组a,a=np.random.randint(2, 100, 24).reshape((2,3,4))
正确答案:
a=np.random.randint(2, 100, 24).reshape((2,3,4))
我的答案:
a = np.random.randint(2,100,24).reshape((2,3,4))
#生成一个24个随机整数的数字数组,修改数组中的形状为2层,3行,4列
批语

答案解析:

11
访问a的第1层、第2行、第3列的元素(此处的数字均为索引值)

正确答案:
a[1,2,3]
我的答案:
a[0,1,2]

批语

12
访问a的第2列中大于40的元素(此处的列数字为索引值)
正确答案:
a[a[:,:,2]>40]
我的答案:
a[a[:,:,1]>40]
批语

答案解析:

13
访问a的第1列和第3列元素(此处的列数字为索引值)
正确答案:
a[:,:,[1,3]]
我的答案:
a[:,:,0],a[:,:,2]

批语

答案解析:

14
创建两个数组,a为43元素全为5的数组,b为43的全0数组,将数组a、b水平拼接
正确答案:
import numpy as np
a = np.full((4,3),5)
b= np.zeros((4,3))
ab = np.hstack((a,b)) 或 ab = np.concatenate((a,b),axis = 1)

我的答案:
a = np.full((4,3),5)
b = np.full((4,3),0)

np.hstack((a,b))
批语

答案解析:

15
创建两个数组,a为43元素全为5的数组,b为43的全0数组,将数组a、b水平拼接
正确答案:
import numpy as np
a = np.full((4,3),5)
b= np.zeros((4,3))
ab = np.hstack((a,b)) 或 ab = np.concatenate((a,b),axis = 1)

我的答案:
a = np.full((4,3),5)

b = np.full((4,3),0)
np.hstack((a,b))
批语

答案解析:

16
创建数组n,n = np.ones((2,3)),将数组n在水平方向切分为2份
正确答案:
import numpy as np
n = np.ones((2,3))
np.vsplit(n,2)

我的答案:
n = np.ones((2,3))
np.vsplit(n,2)
批语

答案解析:

17
创建数组n,n = np.ones((2,3)),将数组n在竖直方向切分为3份
正确答案:
import numpy as np
n = np.ones((2,3))
np.hsplit(n,2)

我的答案:
n = np.ones((2,3))
np.hsplit(n,3)
批语

答案解析:

18
完成附件的实验报告,首先将附件下载下来,按照实验要求完成后将完成的实验报告上传提交

正确答案:

我的答案:
批语

答案解析:

五、过往考题复习(共24题,58.6分)

1
创建一个列表ls,包含元素为a,b,c,d
正确答案:
ls = [‘a’,’b’,’c’,’d’]
我的答案:
ls = [‘a’,’b’,’c’,’d’]
批语

2
选取列表ls中0-3的元素,步长为2
正确答案:
ls[0:4:2]
我的答案:
ls[:3:2]
批语

答案解析:

3

选取列表ls中0-3的元素,步长为-1
注意:step<0,从右往左切片,要求start>stop,从start开始,否则结果为空列表
start/stop值为负数,代表从左往右的倒数第几个元素,确保切片区间有值,否则为空表

正确答案:
ls[-1::-1]或者ls[3::-1]
我的答案:
ls[3:0:-1]

批语

答案解析:

4
把元素v添加在列表ls的结尾
正确答案:
ls.append(‘v’)
我的答案:
ls.append(‘v’)
批语

5
将值x插入列表ls的索引2处
正确答案:
ls.insert(2,’x’)
我的答案:
ls.insert(2,’x’)
批语

6
返回ls中第一个指定值b的索引
正确答案:
ls.index(‘b’)
我的答案:
ls.index(‘b’)
批语

7
删除列表ls中第一次找到的数值d
正确答案:
ls. remove(‘d’)
我的答案:
ls.remove(‘d’)
批语

8
删除列表ls中的索引为1的元素
正确答案:
ls.pop(1)
我的答案:
ls.pop(1)

批语

9
列表ls元素倒排序
正确答案:
ls.reverse()
我的答案:
ls.reverse()
批语

10
列表ls元素正序排序
正确答案:
ls.sort()
我的答案:
ls.sort()
批语

11
返回列表ls1中指定元素a的出现次数,ls1 = [‘a’, ‘b’, ‘c’, ‘d’,’a’, ‘b’, ‘c’, ‘a’,’c’]
正确答案:
ls1.count(‘a’)
我的答案:
ls1 = [‘a’,’b’,’c’,’d’,’a’,’b’,’c’,’a’,’c’]
ls1.count(‘a’)
批语

12
创建一个元组t,包含元素为a,b,c,d
正确答案:
t = (‘a’,’b’,’c’,’d’)
我的答案:
t = (‘a’,’b’,’c’,’d’)
批语

答案解析:

13
返回t中第一个指定值c的索引
正确答案:
t.index(‘c’)
我的答案:
t.index(‘c’)

批语

答案解析:

14
返回列表t1中指定元素a的出现次数,t1 = (‘a’, ‘b’, ‘c’, ‘d’,’a’, ‘b’, ‘c’, ‘a’,’c’)
正确答案:
t1.count(‘a’)
我的答案:
t1 = (‘a’,’b’,’c’,’d’,’a’,’b’,’c’,’a’,’c’)
t1.count(‘a’)
批语

答案解析:

15

存在列表ls = [1,2,3,4],元组t = (1,2,3,4),验证:列表和元组的元素能否修改?
将分别将ls和t中的值1修改为11,如果可以,显示修改后的结果,否则显示报错日志,结果提交代码运行截图
正确答案:
ls[0] = 11
print(ls)
元组不可修改
我的答案:
image.png

批语

16
创建一个集合s,包含元素为a,b,c,d
正确答案:
s = {‘a’,’b’,’c’,’d’}
我的答案:
s = {‘a’,’b’,’c’,’d’}
批语

答案解析:

17
将字符串’python’转换为集合
正确答案:
s = set(‘python’)
我的答案:
set(‘python’)
批语

18

存在列表ls = [11,3,4,6,7,2,3,4,5,7],完成以下操作:
1、对列表元素进行去重;
2、去重的结果转换为列表ls1;
3、对ls1进行倒序排序
正确答案:
s = set(ls)
ls1 = list(s)
ls1.reverse()
我的答案:
ls = [11,3,4,6,7,2,3,4,5,7]
set(ls)
ls1 = list(set(ls))
ls1.reverse()
批语

19

给定两个列表ls1 = [‘a’,’b’,’c’,’d’],ls2 = [11,34,56,23],如何得到如下结果:
1、ls = [(‘a’,11),(‘b’,34),(‘c’,56),(‘d’,23)]
2、d = {‘a’:11,’b’:34,’c’:56,’d’:23}
可以多尝试几种方式
正确答案:
ls = list(zip(ls1,ls2))
d = dict(zip(ls1,ls2))

我的答案:
ls1 = [‘a’,’b’,’c’,’d’],ls2 = [11,34,56,23]
ls = []
for i in range(4):
ls.append((ls1[i],ls2[i]))

d = {}
for i in range(4):
d[ls1[i]] = ls2[i]

批语

20
判断一个学生的考试成绩是否及格:如果成绩大于等于90分,则打印“优秀”;成绩大于等于60分,则打印“及格”,否则输出“不及格”。
正确答案:
score = float(input(“请输入成绩:”))
if score>=90:
print(“优秀”)
elif score>=60:
print(“及格”)
else:
print(“不及格”)
我的答案:
grade = int(input(“请输入学生考试成绩:”))
if grade>=90:
print(“优秀”)

elif grade<60:
print(“不及格”)

else:
print(“及格”)

批语

答案解析:

21
求1+2+3+4+5的值
正确答案:
sum = 0
i = 1
while i<6:
sum = sum+i
i = i+1
print(“sum is %d.” %sum)
我的答案:
print(1+2+3+4+5)
批语

22
将下面数组中的奇数变成它的平方,偶数保持不变,x = [ 1,2,3,4,8,7, 22,33, 88]
正确答案:
x = [ 1,2,3,4,8,7, 22,33, 88]
print(“原数据:”,x)
for i in range(len(x)):
if(x[i] % 2) !=0: # 判读第 i 个元素是否为奇数
x[i] = x[i] x[i]
print(“处理后:”,x)
我的答案:
x = [1,2,3,4,8,7,22,33,88]
for i in range(len(x)):
if x[i]%2 !=0:
x[i]
= x[i]
批语

23
利用列表推导式,筛选出0-100(包括100)的5的倍数
正确答案:
ls = [x for x in range(101) if x%5==0]
我的答案:
to5 = [x for x in range(101) if x%5 == 0 ]
批语

24
利用列表推导式,修改0-100(包括100)的值,如果为奇数,值加10;如果为偶数,值减10
正确答案:
ls = [ i-10 if i%2==0 else i+10 for i in range(101)]
我的答案:
to10 = [x-10 if x%2==0 else x+10 for x in range(101) ]
批语

答案解析:

六、数组计算(共15题)

1
创建数组a = np.array([[1,2],[3,4],[5,6]]),然后复制一个数组b,元素与a完全一致

正确答案:
b = a.copy()
我的答案:
import numpy as np

a = np.array([[1,2],[3,4],[5,6]])
b = a.copy()

2
删除数组a的第2行,然后查看b是否变化

正确答案:
np.delete(a,1,axis = 0)
我的答案:
np.delete(a,1,axis = 0)

print(b)
3
删除数组b的第1行,然后查看a是否变化

正确答案:
np.delete(b,0,axis = 0)
我的答案:
np.delete(b,0,axis=0)
print(a)
答案解析:

4
对比数组a,b是否变化,如果有变化,思考:复制方式更改为什么会不受另一个数组改变而改变?

正确答案:
注意:对于数组的两种复制方式:
浅复制:b = a.view()
深复制:b = a.copy()
由于数组数据删除np.delete()方法不会覆盖原有的数组,即np.delete(a,1)的结果会改变,但是a的结果还是一样不变
所以,a,b的值都不会变化
当直接修改数组的取值时,浅复制的方式会改变另一个数组的取值
我的答案:
有变化
复制方式不受另一个数组改变而改变是因为.copy()复制方法是深复制,复制创建了新的数组对象,同时两个数组的数据不共享。
如果想要复制的数组随原数组数据改变而改变,即需要通过浅复制——.view()视图方式去进行复制,此时两个数组不同,但是指向同一个内存地址,他们的数据是共享(相同)的。
答案解析:

5
返回数组a中每列元素的最大值

正确答案:
np.max(a, axis=0)
我的答案:
a.max(axis = 0)

答案解析:

6
数组a = np.array([[1,2],[3,4],[5,6]]),对每一行的各个元素进行排序,得到数组b

正确答案:
b = np.sort(a,axis=1)
注:如果写成b = a.sort(axis=1),此时a的元素也同样会被修改
我的答案:
b = np.sort(a,axis = 1)
答案解析:

7
返回a中每行的最大值的索引

正确答案:
np.argmax(a, axis=1)
我的答案:
np.argmax(a,axis = 1)
8
数组a = np.array([[1,2],[3,4],[5,6]]),计算数组a各元素的平方根

正确答案:
np.sqrt(a)
我的答案:
np.sqrt(a)
答案解析:

9
计算数组a各元素的3次方

正确答案:
np.power(a, 3)
我的答案:
np.power(a,3)

10
对数组a的的元素按行求和,即一行中的所有元素相加

正确答案:
np.sum(a,axis=1)
我的答案:
np.sum(a,axis = 1)
11
将数组a 展开为 1 维数组

正确答案:
a.flatten()或a.reshape(1,-1)或np.ravel(a)
我的答案:
a.flatten()
12
计算数组a中每一列中元素的中位数

正确答案:
np.median(a,axis=0)
我的答案:
np.median(a,axis = 0)
13
创建矩阵A和B,image.png

正确答案:
A = np.mat(‘3 7;4 9’)
B = np.mat(‘4 2’).T

我的答案:
A = np.matrix([[3,7],[4,9]])

B = np.matrix([4,2]).I
14
求取矩阵A的转置

正确答案:
A.T
我的答案:
print(A.T)
15
已知线性方程组AX=B,求解X

正确答案:
np.linalg.solve(A,B)

我的答案:
a1 = np.array([A]) #系数矩阵
n1 = np.array([B]) #常数列
x = np.linalg.solve(a1,n1)

七、序列&数据框创建(共10题)

1
创建序列s,输出结果如下:
image.png

正确答案:
s = pd.Series([36,30,33,57],index=[‘a’,’b’,’c’,’d’])
我的答案:
s = pandas.Series([36,30,33,57],index = [a,b,c,d])
2
查看序列s的索引

正确答案:
s.index
我的答案:
s.index
3
查看序列s的数值信息

正确答案:
s.values
我的答案:
s.values
4
判断s中是否存在数值10

正确答案:
10 in s.values
我的答案:
10 in s.values
5
存在序列se = Series([1,2,3]),将se添加到s的末尾处,得到s1

正确答案:
se = Series([1,2,3])
s1 = s.append(se)
我的答案:
se = pandas.Series([1,2,3])
s1 =pandas.concat([s,se])
答案解析:

6
创建一个数据框df,结果如下:
image.png

正确答案:
from pandas import DataFrame
dic = {‘a’:[12,12,13,12,14,14],’b’:[13,10,11,12,10,12]}
df = DataFrame(dic) #以字典的形式创建数据框
df
我的答案:
import numpy as np
a = [12,13,12,10,13,11,12,12,14,10,14,12]
array1 = np.array([a]).reshape((6,2))
df = pandas.DataFrame(array1)
df.columns = [‘a’,’b’]
7
访问df的前5行

正确答案:
df.head()
我的答案:
df[0:5]
8
访问df的后3行

正确答案:
df.tail()
我的答案:
df[3:6]

9
访问df中索引为2,4两行数据

正确答案:
df.iloc[[2,4]]
我的答案:
df[df.index==2],df[df.index==4]
10
访问df中a列的1,3行数据

正确答案:
df.loc[[1,3],[“a”]]
我的答案:
df.loc[[0,2]][[‘a’]]

答案解析: