当前位置: 首页 > article >正文

python知识阶段小练习

一、单项选择题(每题2分,共50分)

1.数据结构中,线性结构包括以下哪些?

A. 数组、链表、栈、队列

B. 树、二叉树、堆、图

C. 哈希表、B树、B+树

D. 树、数组、哈希表

2. 给定Python字典d = {'a': 1, 'b': 2, 'c': 3},以下哪个表达式的结果是一个包含字典所有值的列表?

A. list(d.keys())

B. list(d.values())

C. list(d.items())

D. list(d)

3.在Python中,NumPy数组的元素类型必须是什么?

A. 异质的

B. 同质的

C. 可以是任意类型

D. 只能是整数类型

4.在NumPy中,以下哪个函数用于创建具有指定形状和数据类型的新数组,并且数组元素为0?

A. array()

B. arange()

C. zeros()

D. ones()

5.Pandas中的DataFrame对象可以通过哪种方式来创建?

A. 通过传递一个ndarray对象

B. 通过传递一个列表的列表

C. 通过传递一个字典

D. 所有以上方式

6.在Pandas中,以下哪个函数用于将DataFrame存储为CSV文件?

A. to_csv()

B. to_excel()

C. to_sql()

D. to_json()

7.在Matplotlib中,以下哪个函数用于创建一个新的图形窗口?

A. figure()

B. plot()

C. subplot()

D. show()

8.在NumPy中,以下哪个函数用于创建一个等差数列的数组?

A. arange()

B. linspace()

C. logspace()

D. geomspace()

9. 在NumPy中,以下哪个函数用于计算数组中所有元素的平方和?

A. np.sum(arr**2)

B. np.sum(np.sqrt(arr))

C. np.dot(arr, arr)

D. np.multiply.reduce(arr, arr)

10. 在Pandas中,以下哪个函数用于将列'A'和'B'的值相加,并将结果存储在新列'C'中?

A. df['C'] = df['A'] + df['B']

B. df['C'] = df['A'].append(df['B'])

C. df['C'] = df['A'] * df['B']

D. df['C'] = df[['A', 'B']].sum(axis=0)

11.在数据结构中,二叉查找树的中序遍历可以得到什么顺序的序列?

A. 升序

B. 降序

C. 随机顺序

D. 不可预测顺序

12.在NumPy中,以下哪个函数用于创建一个数组,并且数组元素为1?

A. array()

B. arange()

C. zeros()

D. ones()

13.在Pandas中,以下哪个函数用于删除DataFrame中的一列?

A. drop()

B. append()

C. insert()

D. add()

14.在Matplotlib中,以下哪个函数用于设置X轴的标签?

A. title()

B. xlabel()

C. ylabel()

D. text()

15.在数据结构中,栈的哪个操作是将元素添加到栈顶?

A. pop()

B. push()

C. peek()

D. isEmpty()

16.在NumPy中,以下哪个函数用于创建一个数组,并且数组元素按照指定的间隔均匀分布?

A. arange()

B. linspace()

C. logspace()

D. geomspace()

17. 在Python中,以下哪个表达式的结果是一个列表,包含[1, 4, 9]

A. [i**2 for i in range(1, 4)]

B. [i**2 for i in range(4)]

C. [i**2 for i in range(1, 5)]

D. [i**2 for i in range(0, 4)]

18.在Matplotlib中,以下哪个函数用于在图形上添加图例?

A. legend()

B. title()

C. xlabel()

D. ylabel()

19.在数据结构中,队列的哪个操作是将元素添加到队尾?

A. enqueue()

B. dequeue()

C. peek()

D. isEmpty()

20. 在Python中,以下哪个函数用于检查一个字符串是否包含子字符串"Python"?

A. str.contains("Python")

B. str.includes("Python")

C. "Python" in str

D. str.has("Python")

21. 在Python中,以下哪个函数用于将字符串"Hello"和"World"连接成一个字符串?

A. "Hello".join("World")

B. "Hello" + "World"

C. "Hello" * "World"

D. "Hello".format("World")

22.在Matplotlib中,以下哪个函数用于在图形上添加网格线?

A. grid()

B. title()

C. xlabel()

D. ylabel()

23.在数据结构中,二叉树的遍历方式包括?

A. 前序遍历、中序遍历、后序遍历

B. 深度优先搜索、广度优先搜索

C. 哈希表、B树、B+树

D. 栈、队列、链表

24. 在Python中,以下哪个表达式的结果是一个新列表,包含[2, 3, 4]?

A. [i + 1 for i in [2, 3, 4])

B. [i + 1 for i in range(1, 4)]

C. [i + 1 for i in range(2, 5)]

D. [i + 1 for i in range(1, 5)]

25. 在数据结构中,栈的最大容量为10,当前栈中有5个元素,以下哪个操作会导致栈溢出?

A. 继续压入4个元素

B. 继续压入6个元素

C. 弹出2个元素后压入3个元素

D. 弹出3个元素后压入2个元素

二、编程题(共50分)

1.(12分)使用Python的NumPy库,创建一个形状为(4,4)的二维数组,并且初始化所有元素为其行索引与列索引之和。

2.(8分)使用Python的Pandas库,创建一个DataFrame对象,包含三列:'Name'、'Age'和'Gender',数据分别为['Alice', 'Bob', 'Charlie'], [25, 30, 35]和['Female', 'Male', 'Male'],并计算所有人的平均年龄。

3.(5分)使用Python的Matplotlib库,绘制一个简单的散点图,数据点为[1, 2, 2, 3, 4]和[10, 20, 15, 30, 40]。

4.(15分)假设你有一个包含员工信息的CSV文件employees.csv,其中包含以下列:EmployeeID(员工编号)、Name(姓名)、Department(部门)、Salary(薪资)。

数据文件内容(employees.csv):

EmployeeID,Name,Department,Salary

1,John Doe,Finance,70000

2,Jane Smith,Marketing,65000

3,Bob Johnson,Finance,80000

4,Alice Brown,IT,75000

5,Mike Davis,Marketing,72000

要求:

  • 1.使用Pandas读取employees.csv文件,并创建一个DataFrame。
  • 2.计算每个部门的平均薪资,并按平均薪资从高到低排序。
  • 3.找出薪资超过其所在部门平均薪资的员工,并创建一个新的DataFrame。
  • 4.将结果保存到一个新的CSV文件above_average_salaries.csv中。

5.(10分)使用Python的Pandas库,对以下DataFrame进行排序,首先按照'Age'降序排序,如果'Age'相同,则按照'Name'升序排序。

示例数据:

import pandas as pd

def sort_test():

    data = {

        'Name': ['Alice', 'Bob', 'Charlie', 'David'],

        'Age': [25, 30, 35, 30]

    }

选择题

1.数据结构中,线性结构包括以下哪些?A

A. 数组、链表、栈、队列

B. 树、二叉树、堆、图

C. 哈希表、B树、B+树

D. 树、数组、哈希表

知识点:数据结构

数据结构大致分为几大类

  • 线性结构:数组、链表、栈、队列等。
  • 非线性结构:树、二叉树、堆、图等。
  • 散列:哈希表。
  • 索引:B树、B+树等。

2. 给定Python字典d = {'a': 1, 'b': 2, 'c': 3},以下哪个表达式的结果是一个包含字典所有值的列表?B

A. list(d.keys())  #将字典的键的值取出来,用list()转换为列表 ['a', 'b', 'c']

B. list(d.values()) #将字典的键值的值取出来,用list()转换为列表 [1, 2, 3]

C. list(d.items())  #将字典的键值对的值取出来,用list()转换为列表 [('a', 1), ('b', 2), ('c', 3)]

D. list(d) #利用list()将字典转换为列表,但只会有键的值被转换 ['a', 'b', 'c']

知识点:字典

1.dict.values()返回一个视图对象

2.dict.keys()返回一个视图对象

3.dict.items()以列表返回一个视图对象

3.在Python中,NumPy数组的元素类型必须是什么?B

A. 异质的

B. 同质的

C. 可以是任意类型

D. 只能是整数类型

知识点:Numpy数组

Numpy与python列表的区别

  • NumPy 数组是同质数据类型(homogeneous),即数组中的所有元素必须是相同的数据类型。数据类型在创建数组时指定,并且数组中的所有元素都必须是该类型。
  • Python 列表是异质数据类型(heterogeneous),即列表中的元素可以是不同的数据类型。列表可以包含整数、浮点数、字符串、对象等各种类型的数据。
  • NumPy 数组提供了丰富的数学函数和操作,如矩阵运算、线性代数、傅里叶变换等。
  • Python 列表提供了基本的列表操作,如添加、删除、切片、排序等。

4.在NumPy中,以下哪个函数用于创建具有指定形状和数据类型的新数组,并且数组元素为0?C

A. array() #Numpy中的基础常见数组函数

B. arange() #与range相似,创建一个指定范围的数组

C. zeros() #创建一个初始化为0的数组

D. ones() #创建一个初始化为1的数组

知识点:Numpy数组

1.创建数组的方法

  • numpy.array(object, dtype = None, copy = True, order = None,ndmin = 0):通过 NumPy 的内置函数 array() 可以创建 ndarray 对象
序号参数描述说明
1object表示一个数组序列
2dtype可选参数,通过它可以更改数组的数据类型
3copy可选参数,表示数组能否被复制,默认是 True
4order以哪种内存布局创建数组,有 3 个可选值,分别是 C(行序列)/F(列序列)/A(默认)
5ndmin用于指定数组的维度

2.创建数组的其他方法

  • numpy.empty(shape, dtype = float, order = 'C'):empty() 方法用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组(数组元素为随机值)
shape数组的形状,可以是整数或整数元组
dtype数组的数据类型,默认为 float
order数组的内存布局,有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序
  • numpy.zeros(shape, dtype = float, order = 'C'):创建指定大小的数组,数组元素以 0 来填充
参数描述
shape数组形状
dtype数据类型,可选
order'C' 用于 C 的行数组,或者 'F' 用于 FORTRAN 的列数组
  • numpy.ones(shape, dtype = None, order = 'C'):创建指定形状的数组,数组元素以 1 来填充
参数描述
shape数组形状
dtype数据类型,可选
order'C' 用于 C 的行数组,或者 'F' 用于 FORTRAN 的列数组
  • numpy.arange(start, stop, step, dtype):arange() 函数用于创建一个等差数列的数组。它类似于 Python 内置的 range() 函数,但返回的是一个 NumPy 数组而不是一个列表。
参数描述
start起始值,默认为 0
stop终止值(不包含)
step步长,默认为 1
dtype返回 ndarray 的数据类型,如果没有提供,则会使用输入数据的类型
  • np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None):在指定的数值区间内,返回均匀间隔的一维等差数组,默认均分 50 份
  • 参数描述
    start起始值,默认为 0
    stop终止值
    num表示数值区间内要生成多少个均匀的样本,默认值为 50
    endpoint默认为 True,表示数列包含 stop 终止值,反之不包含
    retstep表示是否返回步长。如果为 True,则返回一个包含数组和步长的元组;如果为 False,则只返回数组。默认为 False。
    dtype返回 ndarray 的数据类型,默认为 None,表示根据输入参数自动推断数据类型。

5.Pandas中的DataFrame对象可以通过哪种方式来创建?D

A. 通过传递一个ndarray对象

B. 通过传递一个列表的列表

C. 通过传递一个字典

D. 所有以上方式

知识点:DataFrame二维数组

1创建 DataFrame 对象的方式

  • 列表
  • 字典
  • Series
  • Numpy ndarrays
  • 另一个 DataFrame

2.创建 DataFrame 空对象

pd.DataFrame()

3.列表创建 DataFrame 对象

data = ['小明','小红','小紫']
colum = ['name']
pd.DataFrame(data= data, columns = colum)

4.列表嵌套列表创建 DataFrame 对象

data = [['小米', 18], ['小红', 19], ['小紫', 20]]
pd.DataFrame(data = data)

5.列表嵌套字典创建 DataFrame 对象

data = [{'name': "张三", 'age': 18},{'name': "小红", 'gender': "男", 'age': 19}]
pd.DataFrame(data = data)

6.字典创建 DataFrame 对象

data = {"name":['小米','小红','小紫'],"age":[18,19,20]}
pd.DataFrame(data = data)

6.在Pandas中,以下哪个函数用于将DataFrame存储为CSV文件?A

A. to_csv() #将DataFrame数据对象存为csv文件

B. to_excel() #用于将DataFrame存储为Excel文件。

C. to_sql() #用于将DataFrame存储到SQL数据库中。

D. to_json() #用于将DataFrame存储为JSON格式的文件。

知识点:读取文件(csv和excel)

1.to_csv():to_csv() 方法将 DataFrame 存储为 csv 文件

df.to_csv('output.csv', index=False)

2.read_csv():read_csv() 表示从 CSV 文件中读取数据,并创建 DataFrame 对象。

df = pd.read_csv('output.csv')

3. read_excel():read_excel() 读取 Excel 表格中的数据。

pd.read_excel(io, sheet_name=0, header=0, names=None, index_col=None,
              usecols=None, squeeze=False,dtype=None, engine=None,
              converters=None, true_values=None, false_values=None,
              skiprows=None, nrows=None, na_values=None, parse_dates=False,
              date_parser=None, thousands=None, comment=None, skipfooter=0,
              convert_float=True, **kwds)
参数名称说明
io表示 Excel 文件的存储路径。
sheet_name要读取的工作表名称。
header指定作为列名的行,默认0,即取第一行的值为列名;若数据不包含列名,则设定 header = None。若将其设置 为 header=2,则表示将前两行作为多重索引。
names一般适用于Excel缺少列名,或者需要重新定义列名的情况;names的长度必须等于Excel表格列的长度,否则会报错。
index_col用做行索引的列,可以是工作表的列名称,如 index_col = '列名',也可以是整数或者列表。
usecolsint或list类型,默认为None,表示需要读取所有列。
squeezeboolean,默认为False,如果解析的数据只包含一列,则返回一个Series。
converters规定每一列的数据类型。
skiprows接受一个列表,表示跳过指定行数的数据,从头部第一行开始。
nrows需要读取的行数。
skipfooter接受一个列表,省略指定行数的数据,从尾部最后一行开始。

4.to_excel():to_excel() 函数可以将 DataFrame 中的数据写入到 Excel 文件。如果想要把单个对象写入 Excel 文件,那么必须指定目标文件名;如果想要写入到多张工作表中,则需要创建一个带有目标文件名的 ExcelWriter 对象,并通过 sheet_name 参数依次指定工作表的名称。

DataFrame.to_excel(excel_writer, sheet_name='Sheet1', na_rep='', 
float_format=None, columns=None, header=True, index=True, 
index_label=None, startrow=0, startcol=0, engine=None,
merge_cells=True, encoding=None, inf_rep='inf', verbose=True,
freeze_panes=None) 
参数名称描述说明
excel_wirter文件路径或者 ExcelWrite 对象。
sheet_name指定要写入数据的工作表名称。
na_rep缺失值的表示形式。
float_format它是一个可选参数,用于格式化浮点数字符串。
columns指要写入的列。
header写出每一列的名称,如果给出的是字符串列表,则表示列的别名。
index表示要写入的索引。
index_label引用索引列的列标签。如果未指定,并且 hearder 和 index 均为为 True,则使用索引名称。如果 DataFrame 使用 MultiIndex,则需要给出一个序列。
startrow初始写入的行位置,默认值0。表示引用左上角的行单元格来储存 DataFrame。
startcol初始写入的列位置,默认值0。表示引用左上角的列单元格来储存 DataFrame。
engine它是一个可选参数,用于指定要使用的引擎,可以是 openpyxl 或 xlsxwriter。

7.在Matplotlib中,以下哪个函数用于创建一个新的图形窗口?A

A. figure()

B. plot()

C. subplot()

D. show() #显示图形

知识点:Matplotlib

1.figure() 函数:figure() 函数来实例化 figure 对象,即绘制图形的对象,可以通过这个对象,来设置图形的样式等

  • figsize:指定画布的大小,(宽度,高度),单位为英寸
  • dpi:指定绘图对象的分辨率,即每英寸多少个像素,默认值为80
  • facecolor:背景颜色
  • dgecolor:边框颜色
  • frameon:是否显示边框

2.pylab.plot:pylab.plot 是一个用于绘制二维图形的函数。它可以根据提供的 x 和 y 数据点绘制线条和/或标记。

(1)语法:pylab.plot(x, y, format_string=None, **kwargs)

  • x: x 轴数据,可以是一个数组或列表。
  • y: y 轴数据,可以是一个数组或列表。
  • format_string: 格式字符串,用于指定线条样式、颜色等。
  • **kwargs: 其他关键字参数,用于指定线条的属性。

3.subplot:subplot 是一个较早的函数,用于创建并返回一个子图对象。它的使用比较简单,通常用于创建网格状的子图布局。subplot 的参数通常是一个三位数的整数,其中每个数字代表子图的行数、列数和子图的索引。

(1)语法:fig.add_subplot(nrows, ncols, index)

8.在NumPy中,以下哪个函数用于创建一个等差数列的数组?A

A. arange() #A、B详细知识点看第4题

B. linspace()

C. logspace() # 用于在对数刻度上生成等间隔的数值序列,通常用于生成等比数列的对数间隔值。

D. geomspace() #用于生成等比数列,其中相邻元素的比值是常数。

9. 在NumPy中,以下哪个函数用于计算数组中所有元素的平方和?A

A. np.sum(arr**2) #这个函数首先通过arr**2计算数组中每个元素的平方,然后使用np.sum()对这些平方值求和。这是计算数组中所有元素平方和的标准方法。

B. np.sum(np.sqrt(arr)) #平方根的和

C. np.dot(arr, arr)  #这个函数计算两个数组的点积。

D. np.multiply.reduce(arr, arr) #NumPy中并没有直接的np.multiply.reduce函数。

10. 在Pandas中,以下哪个函数用于将列'A'和'B'的值相加,并将结果存储在新列'C'中?A

A. df['C'] = df['A'] + df['B'] #这个表达式直接对DataFrame df中的列'A'和列'B'进行逐元素相加,并将结果赋值给新列'C'。

B. df['C'] = df['A'].append(df['B']) # 这个表达式是错误的,因为append方法用于将一行或多行附加到DataFrame的末尾,而不是用于列之间的逐元素操作。

C. df['C'] = df['A'] * df['B'] #这个表达式将列'A'和列'B'的值逐元素相乘

D. df['C'] = df[['A', 'B']].sum(axis=0) #计算指定列的值的和,axis=1才是列'A'和'B'的值相加

11.在数据结构中,二叉查找树的中序遍历可以得到什么顺序的序列?A

A. 升序 #中序遍历是先遍历的左子树,而比父节点小的元素都存在与各各左子树中,所以是从小遍历到大

B. 降序

C. 随机顺序

D. 不可预测顺序

12.在NumPy中,以下哪个函数用于创建一个数组,并且数组元素为1?D #题目知识点在第4题

A. array()

B. arange()

C. zeros()

D. ones()

13.在Pandas中,以下哪个函数用于删除DataFrame中的一列?A

A. drop()

B. append()

C. insert()

D. add() #不输入DataFrame中的相关函数

知识点:DataFrame的增删改查(主要通过索引操作)

import pandas as pd  
  
# 从字典创建DataFrame  
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}  
df = pd.DataFrame(data)  
  
# 从CSV文件创建DataFrame  
# df = pd.read_csv('file.csv')

# 删除列  
df.drop('A', axis=1, inplace=True)  # inplace=True表示在原DataFrame上修改  
  
# 删除行  
df.drop(0, inplace=True)  # 删除索引为0的行  
  
# 根据条件删除行  
df = df[df['B'] != 5]  # 删除'B'列中值为5的行,返回新DataFrame(不修改原DataFrame)

# 修改单个元素  
df.loc[0, 'A'] = 10  
  
# 修改整列  
df['A'] = df['A'] * 2  
  
# 添加新列  
df['C'] = df['A'] + df['B']  
  
# 根据条件更新元素  
df.loc[df['A'] > 5, 'A'] = -1

# 读取单列  
column_a = df['A']  
  
# 读取多列  
subset = df[['A', 'B']]  
  
# 读取特定行(通过索引)  
row = df.loc[0]  # 第一行,索引从0开始  
  
# 读取特定行和列  
value = df.loc[0, 'A']  # 第一行中'A'列的值

14.在Matplotlib中,以下哪个函数用于设置X轴的标签?B

A. title() #题目的标签

B. xlabel()   #x轴的标签

C. ylabel() #y轴的标签

D. text() #用于在图表中的任意位置添加文本注释

15.在数据结构中,栈的哪个操作是将元素添加到栈顶?B

A. pop() #出栈

B. push() #入栈

C. peek() #取栈顶元素

D. isEmpty() #栈是否为空

知识点:栈常见的操作(具体函数需要自行写代码实现)

1.push(element): 添加一个新元素到栈顶位置.

2.pop():移除栈顶的元素,同时返回被移除的元素。

3.peek():返回栈顶的元素,不对栈做任何修改(这个方法不会移除栈顶的元素,仅仅返回它)。

4.i.sEmpty():如果栈里没有任何元素就返回true,否则返回false。

5.clear():移除栈里的所有元素。

6.size():返回栈里的元素个数。这个方法和数组的length属性很类似。

16.在NumPy中,以下哪个函数用于创建一个数组,并且数组元素按照指定的间隔均匀分布?B 

A. arange() #A、B详细知识点看第4题

B. linspace()

C. logspace() # 用于在对数刻度上生成等间隔的数值序列,通常用于生成等比数列的对数间隔值。

D. geomspace() #用于生成等比数列,其中相邻元素的比值是常数。

17. 在Python中,以下哪个表达式的结果是一个列表,包含[1, 4, 9]?A

A. [i**2 for i in range(1, 4)]

B. [i**2 for i in range(4)]

C. [i**2 for i in range(1, 5)]

D. [i**2 for i in range(0, 4)]

知识点:Python推导式(首位表达式为遍历数组后返回的数据)

1.列表推导式

[ 表达式 for 自定义变量 in 可迭代对象 ]
# 或
[ 表达式 for 自定义变量 in 可迭代对象 if 真值表达式 ]

2.字典推导式

- **{ 键表达式: 值表达式 for 元素 in 集合 }**

- **{ 键表达式: 值表达式 for 元素 in 集合 if 条件 }**

3.集合推导式

{ 表达式 for 元素 in 序列 }
{ 表达式 for 元素 in 序列 if 条件 }

4.元组推导式

(表达式 for 元素 in 序列 )
(表达式 for 元素 in 序列 if 条件 )

18.在Matplotlib中,以下哪个函数用于在图形上添加图例?A

A. legend() #图例标签

B. title() #标题标签

C. xlabel() #x轴标签

D. ylabel() #y轴标签

19.在数据结构中,队列的哪个操作是将元素添加到队尾?A

A. enqueue() #此操作在队列的末尾(即队尾)添加一个元素。这遵循了队列的先进先出(FIFO)原则,即最先进入队列的元素将最先被移除。

B. dequeue() #此操作从队列的开头(即队首)移除并可能返回元素。这是队列中移除元素的唯一方式。

C. peek() #此操作通常用于查看队首的元素而不移除它。这允许你检查队列中的下一个元素是什么,而不会改变队列的状态。

D. isEmpty() #此操作检查队列是否为空。

20. 在Python中,以下哪个函数用于检查一个字符串是否包含子字符串"Python"?C

A. str.contains("Python") #这是Pandas库中DataFrame或Series对象用于检查每个元素是否包含特定模式的方法,而不是Python字符串对象的方法。

B. str.includes("Python") #Python标准库中的字符串对象没有includes方法。

C. "Python" in str

D. str.has("Python") #Python标准库中的字符串对象没有has方法。

21. 在Python中,以下哪个函数用于将字符串"Hello"和"World"连接成一个字符串?B

A. "Hello".join("World") #连接可迭代对象,并指定连接方法 WHellooHellorHellolHellod

B. "Hello" + "World" #字符串与字符串之间的连接

C. "Hello" * "World" #错误语法 TypeError: can't multiply sequence by non-int of type 'str',使用星号(*)运算符进行字符串乘法时,它会将左边的字符串重复右边的整数次。但在这里,"World"不是一个整数,所以这会引发一个TypeError。

D. "Hello".format("World") #format方法用于格式化字符串,它使用花括号({})作为占位符,并将传递给format方法的参数替换到这些占位符中。但在这里,"Hello"字符串中没有占位符,所以"World"会被忽略,并且结果只是原始的"Hello"字符串

22.在Matplotlib中,以下哪个函数用于在图形上添加网格线?A

A. grid() #网格标签

B. title() #标题标签

C. xlabel() #x轴标签

D. ylabel() #y轴标签

23.在数据结构中,二叉树的遍历方式包括?A

A. 前序遍历、中序遍历、后序遍历

B. 深度优先搜索、广度优先搜索 

C. 哈希表、B树、B+树  #散列和索引

D. 栈、队列、链表 #线性结构

知识点:二叉树遍历

1.前序遍历,按照以下顺序访问节点:根节点、左子树、右子树。

2.中序遍历,按照以下顺序访问节点:左子树、根节点、右子树。

3.后序遍历,按照以下顺序访问节点:左子树、右子树、根节点。

24. 在Python中,以下哪个表达式的结果是一个新列表,包含[2, 3, 4]?B

A. [i + 1 for i in [2, 3, 4]) #3,4,5

B. [i + 1 for i in range(1, 4)] #2,3,4

C. [i + 1 for i in range(2, 5)] #3,4,5

D. [i + 1 for i in range(1, 5)] #2,3,4,5

25. 在数据结构中,栈的最大容量为10,当前栈中有5个元素,以下哪个操作会导致栈溢出?B

A. 继续压入4个元素 #栈未满,不会溢出

B. 继续压入6个元素 #栈已满,溢出

C. 弹出2个元素后压入3个元素 #栈未满,不会溢出

D. 弹出3个元素后压入2个元素 #栈未满,不会溢出

编程题

第一题

# 使用Python的NumPy库,创建一个形状为(4,4)的二维数组,并且初始化所有元素为其行索引与列索引之和。
import numpy as np
arr = np.arange(16).reshape(4,4)
"""
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
"""
print(arr)

for i in range(arr.shape[0]):
    for j in range(arr.shape[1]):
        arr[i,j] = i+j

"""
[[0 1 2 3]
 [1 2 3 4]
 [2 3 4 5]
 [3 4 5 6]]
"""
print(arr)

或者

import numpy as np
arr = np.zeros((4,4),dtype=int)
for i in range(4):
    for j in range(4):
        arr[i][j] = i + j
print(arr)

第二题

# 使用Python的Pandas库,
# 创建一个DataFrame对象,
# 包含三列:'Name'、'Age'和'Gender',
# 数据分别为['Alice', 'Bob', 'Charlie'], [25, 30, 35]和['Female', 'Male', 'Male'],
# 并计算所有人的平均年龄。
import pandas as pd
def DataFrame_test():
    data = {
        'Name':['Alice', 'Bob', 'Charlie'],
        'Age':[25, 30, 35],
        'Gender':['Female', 'Male', 'Male']
    }
    df = pd.DataFrame(data)
    """
      Name  Age  Gender
0    Alice   25  Female
1      Bob   30    Male
2  Charlie   35    Male
    """
    print(df)
    age_mean=df['Age'].mean()
    df['Age_mean'] = age_mean
    print(age_mean)
    """
      Name  Age  Gender  Age_mean
0    Alice   25  Female      30.0
1      Bob   30    Male      30.0
2  Charlie   35    Male      30.0
    """
    print(df)

if __name__ == '__main__':
    DataFrame_test()

第三题

# 使用Python的Matplotlib库,
# 绘制一个简单的散点图,
# 数据点为[1, 2, 2, 3, 4]和[10, 20, 15, 30, 40]。
import matplotlib.pyplot as plt
def matplotlib_test():
    fig = plt.figure()

    data = [
        [1, 2, 2, 3, 4],
        [10, 20, 15, 30, 40]
    ]

    axes = fig.add_axes([.1,.2,.8,.8])
    x = [1,2,3,4,5]
    y0 = data[0]
    y1 = data[1]

    axes.scatter(x, y0, color = 'red')
    axes.scatter(x, y1, color = 'blue')

    plt.show()

if __name__ == '__main__':
    matplotlib_test()

或者

import matplotlib.pyplot as plt
x= [1,2,2,3,4]
y= [10,20,30,40,50]

# 画布和画图区域
fig, ax = plt.subplots()
ax.scatter(x,y)
plt.show()

第四题

# 假设你有一个包含员工信息的CSV文件employees.csv,
# 其中包含以下列:EmployeeID(员工编号)、Name(姓名)、Department(部门)、Salary(薪资)。
# 数据文件内容(employees.csv):
# EmployeeID,Name,Department,Salary
# 1,John Doe,Finance,70000
# 2,Jane Smith,Marketing,65000
# 3,Bob Johnson,Finance,80000
# 4,Alice Brown,IT,75000
# 5,Mike Davis,Marketing,72000


# 要求:
# 1.使用Pandas读取employees.csv文件,并创建一个DataFrame。
# 2.计算每个部门的平均薪资,并按平均薪资从高到低排序。
# 3.找出薪资超过其所在部门平均薪资的员工,并创建一个新的DataFrame。
# 4.将结果保存到一个新的CSV文件above_average_salaries.csv中。
import pandas as pd
def csv_test():
    data = {
        'EmployeeID':[1,2,3,4,5],
        'Name':['John', 'Jane', 'Bob', 'Alice', 'Mike'],
        'Department':['Finance', 'Marketing', 'Finance', 'IT', 'Marketing'],
        'Salary':[7000, 6500, 8000, 7500, 7200]
    }
    df = pd.DataFrame(data)
    df.to_csv('employees.csv', index=False)

    #1.使用Pandas读取employees.csv文件,并创建一个DataFrame。
    read_df = pd.read_csv('employees.csv')

    """
    EmployeeID   Name Department  Salary
0           1   John    Finance    7000
1           2   Jane  Marketing    6500
2           3    Bob    Finance    8000
3           4  Alice         IT    7500
4           5   Mike  Marketing    7200
    """
    print(read_df)

    #2.计算每个部门的平均薪资,并按平均薪资从高到低排序。
    Salary_mean = read_df.groupby('Department')['Salary'].transform('mean')
    read_df['Salary_mean'] = Salary_mean
    read_df.sort_values(by='Salary_mean', ascending=False, inplace=True)

    """
       EmployeeID   Name Department  Salary  Salary_mean
0           1   John    Finance    7000       7500.0
2           3    Bob    Finance    8000       7500.0
3           4  Alice         IT    7500       7500.0
1           2   Jane  Marketing    6500       6850.0
4           5   Mike  Marketing    7200       6850.0
    """
    print(read_df)

    #3.找出薪资超过其所在部门平均薪资的员工,并创建一个新的DataFrame。
    upper_mean=read_df.loc[read_df['Salary'] > read_df['Salary_mean']]
    #或者
    df1 = df[df['Salary']>df['avg_salary']]

    """
    upper_mean:
   EmployeeID  Name Department  Salary  Salary_mean
2           3   Bob    Finance    8000       7500.0
4           5  Mike  Marketing    7200       6850.0
    """
    print(f"upper_mean:\n{upper_mean}")

    #4.将结果保存到一个新的CSV文件above_average_salaries.csv中。
    upper_mean.to_csv('above_average_salaries.csv', index=False)

if __name__ == '__main__':
    csv_test()

第五题

# 使用Python的Pandas库,
# 对以下DataFrame进行排序,首先按照'Age'降序排序,
# 如果'Age'相同,则按照'Name'升序排序。
# 示例数据:
# data = {
#     'Name': ['Alice', 'Bob', 'Charlie', 'David'],
#     'Age': [25, 30, 35, 30]
# }
import pandas as pd
def sort_test():
    data = {
        'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 35, 30]
    }
    
    df = pd.DataFrame(data)
    df_lower=df.sort_values(by=['Age', 'Name'], ascending=[False,True])
    """
          Name  Age
2  Charlie   35
1      Bob   30
3    David   30
0    Alice   25
    """
    print(df_lower)

if __name__ == '__main__':
    sort_test()


http://www.kler.cn/a/535701.html

相关文章:

  • 寒假2.5
  • python3中错误与异常初识
  • 10. k8s二进制集群之Kube Scheduler部署
  • 使用 ElementUI 和 Spring 实现稳定可靠的文件上传和下载功能
  • Docker使用教程
  • Beans模块之工厂模块注解模块CustomAutowireConfigurer
  • 基于Java(MVC)+MySQL实现的心理咨询预约管理系统
  • 蛋糕商城 Rust 版介绍
  • Unity DoTween使用文档
  • deepseek API 调用-python
  • java 8 在 idea 无法创建 java spring boot 项目的 变通解决办法
  • react的antd中Cascader级联选择如何回显
  • 网络安全 风险评估指南 网络安全风险测评
  • Nginx 请求超时
  • CEF132 编译指南 Windows 篇 - 安装 Visual Studio 2022 (二)
  • Linux学习笔记15---定时器按键消抖实验
  • ASP.NET Core JWT
  • DeepSeek 引发 AI 大模型战火,编程语言群雄激战谁夺胜利权杖?
  • 4G核心网的演变与创新:从传统到虚拟化的跨越
  • e2studio开发RA2E1(8)----GPT定时器频率与占空比的设置
  • 3. 【.NET Aspire 从入门到实战】--理论入门与环境搭建--环境搭建
  • SpringBoot开发(五)SpringBoot接收请求参数
  • 【数据结构】单向链表(真正的零基础)
  • 六。自定义数据集 使用pytorch框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测
  • 虚拟机报错:处理器未启用 NX/XD,而 VMware Workstation 要求启用 NX/XD.没有可打开电源的虚拟机
  • k8sollama部署deepseek-R1模型,内网无坑