学习日志23 python

发布于:2025-08-01 ⋅ 阅读:(17) ⋅ 点赞:(0)

1 set()函数

在 Python 中,set() 是一个内置函数,用于创建一个集合(set)。集合是一种无序且不包含重复元素的数据结构。

set() 函数的基本用法:

  1. 创建空集合:

注意:不能用 {} 创建空集合,{} 创建的是空字典!!!!!!!

python

运行

empty_set = set()  # 注意:不能用 {} 创建空集合,{} 创建的是空字典
  1. 从可迭代对象创建集合:

python

运行

# 从列表创建
numbers = set([1, 2, 3, 4, 4, 5])  # 结果: {1, 2, 3, 4, 5}(自动去重)

# 从字符串创建
chars = set("hello")  # 结果: {'h', 'e', 'l', 'o'}(字符去重)

# 从元组创建
tup = set(("a", "b", "a", "c"))  # 结果: {'a', 'b', 'c'}

集合的主要特性:

  • 无序性:集合中的元素没有固定顺序,不能通过索引访问
  • 唯一性:自动去除重复元素
  • 可变性:可以添加或删除元素

常用的集合操作:

python

运行

s = {1, 2, 3}

# 添加元素
s.add(4)  # {1, 2, 3, 4}

# 删除元素
s.remove(2)  # {1, 3, 4}

# 集合运算
a = {1, 2, 3}
b = {3, 4, 5}

print(a.union(b))      # 并集: {1, 2, 3, 4, 5}
print(a.intersection(b))  # 交集: {3}
print(a - b)           # 差集: {1, 2}

集合常用于需要去重或进行集合运算(如交集、并集)的场景。

2 按照 "是否允许重复元素" 的标准分类数据结构

按照 "是否允许重复元素" 的标准,可以将 Python 中常见的数据结构分为以下分类:

一、允许重复元素的数据结构

  1. 列表(list)
    有序、可变,元素可以重复:

    python

    运行

    my_list = [1, 2, 2, 3, 3, 3]  # 合法,重复元素会被保留
    
  2. 元组(tuple)
    有序、不可变,元素可以重复:

    python

    运行

    my_tuple = (1, 2, 2, 3)  # 合法,重复元素会被保留
    
  3. 字典(dict)

    • 键(key)不允许重复(重复会被覆盖)
    • 值(value)允许重复:

    python

    运行

    my_dict = {"a": 10, "b": 10, "c": 10}  # 值重复是合法的
    
  4. 字符串(str)
    有序、不可变,字符可以重复:

    python

    运行

    my_str = "hello"  # 字符 'l' 重复,合法
    

二、不允许重复元素的数据结构

  1. 集合(set)
    无序、可变,元素不可重复(自动去重):

    python

    运行

    my_set = {1, 2, 2, 3}  # 实际存储为 {1, 2, 3},重复元素被自动去除
    
  2. 冻结集合(frozenset)
    无序、不可变,元素不可重复(自动去重):

    python

    运行

    my_frozenset = frozenset([1, 2, 2, 3])  # 实际存储为 frozenset({1, 2, 3})
    

总结

  • 允许重复:列表、元组、字符串、字典(值允许重复)
  • 不允许重复:集合、冻结集合、字典(键不允许重复)

3 remove() index() 方法都是 "找到第一个匹配项就停止",不会继续处理后续可能存在的相同元素

在python3中,下列关于列表的程序运行结果应为( )

lists = [1, 1, 1, 3, 5]
lists.remove(1)
res = lists.index(1)
print(res)

A [0, 1, 2]
B [0, 1]
C 0
D None

正确答案:C

我们来分析这道题的执行过程:

  1. 初始列表 lists = [1, 1, 1, 3, 5]
  2. 执行 lists.remove(1) 时,会移除列表中第一个值为 1 的元素,此时列表变为 [1, 1, 3, 5]
  3. 执行 res = lists.index(1) 时,会查找列表中第一个值为 1 的元素的索引,此时第一个 1 位于索引 0 的位置
  4. 最后打印 res,输出结果为 0

所以正确答案是选项 C,即输出结果为 0。

这道题主要考察了列表的两个方法:

  • remove():移除列表中某个值的第一个匹配项
  • index():返回列表中某个值第一个匹配项的索引位置

小结

在 Python 列表中:

  • remove(x) 方法只会移除列表中第一个值为x的元素,之后的元素不会被处理
  • index(x) 方法只会返回列表中第一个值为x的元素的索引位置

这配项就停止",不会继两个方法都是 "找到第一个匹续处理后续可能存在的相同元素。

例如,如果列表是[1, 2, 1, 3, 1]

  • 执行remove(1)后列表变为[2, 1, 3, 1](只移除了第一个 1)
  • 执行index(1)会返回 1(第一个 1 所在的索引位置)

这种特性在处理包含重复元素的列表时需要特别注意,如果你需要处理所有匹配项,就需要使用循环来实现了。

4 NumPy库数值处理函数的题目

执行以下程序,下列选项中,其输出结果与程序的输出结果相同的一项是()
import numpy as np
arr = np.array([-1.5, 1.5])
print(np.round(arr))

A print(np.floor(arr))
B print(np.ceil(arr))
C print(np.trunc(arr))
D print(np.rint(arr))

正确答案:D

这道题主要考查 numpy 中几个数值处理函数的区别,我们一步步分析:

首先看题目中的程序:

python

运行

import numpy as np
arr = np.array([-1.5, 1.5])
print(np.round(arr))  # 四舍五入,采用"银行家舍入法"

np.round()的计算规则是:

  • 对于 - 1.5:四舍五入到最近的偶数,结果是 - 2
  • 对于 1.5:四舍五入到最近的偶数,结果是 2
    所以输出结果是 [-2. 2.]

再看各个选项:

  • A 选项 np.floor(arr)(向下取整):

    • -1.5 → -2(向负无穷方向取整)
    • 1.5 → 1(向负无穷方向取整)
    • 结果:[-2. 1.]
  • B 选项 np.ceil(arr)(向上取整):

    • -1.5 → -1(向正无穷方向取整)
    • 1.5 → 2(向正无穷方向取整)
    • 结果:[-1. 2.]
  • C 选项 np.trunc(arr)(截断小数部分):

    • -1.5 → -1(只保留整数部分)
    • 1.5 → 1(只保留整数部分)
    • 结果:[-1. 1.]
  • D 选项 np.rint(arr)(四舍五入到最近整数):

    • 行为与np.round()完全一致,采用银行家舍入法
    • -1.5 → -2,1.5 → 2
    • 结果:[-2. 2.]

因此,只有 D 选项的输出结果与题目中程序的输出结果相同,正确答案是 D。

5 NumPy库中“数值处理” 和 “数组操作” 的函数

在 NumPy 中,除了题目中涉及的round()floor()ceil()trunc()rint()这些数值处理函数,还有很多常用的函数,我们可以从 “数值处理” 和 “数组操作” 两个维度来补充相关知识:

一、常用数值处理函数(针对数组元素的计算)

  1. 四舍五入相关

    • np.round(arr, decimals=0):四舍五入到指定小数位数(默认 0 位),对x.5采用 “银行家舍入法”(向最近偶数取整)。
    • np.rint(arr):与np.round()功能完全一致,返回四舍五入后的整数数组。
  2. 取整相关

    • np.floor(arr):向下取整(向负无穷方向取整),例如2.9→2-2.1→-3
    • np.ceil(arr):向上取整(向正无穷方向取整),例如2.1→3-2.9→-2
    • np.trunc(arr):截断小数部分(直接保留整数部分),例如2.9→2-2.9→-2
    • np.floor_divide(a, b):对数组ab执行向下取整除法(类似//运算符)。
  3. 绝对值与符号

    • np.abs(arr) / np.absolute(arr):计算数组元素的绝对值,例如-3.5→3.5
    • np.sign(arr):返回数组元素的符号(正数→1,负数→-1,0→0)。
  4. 幂运算与对数

    • np.sqrt(arr):计算平方根(仅对非负数有效)。
    • np.power(arr, n):计算数组元素的 n 次幂。
    • np.exp(arr):计算自然指数(e 的幂)。
    • np.log(arr) / np.log10(arr):计算自然对数(底为 e)/ 常用对数(底为 10)。

二、数组操作函数(针对数组结构的处理)

  1. 数组形状调整

    • np.reshape(arr, new_shape):改变数组形状(元素总数不变)。
    • np.flatten():将多维数组展平为一维数组(返回副本)。
    • np.ravel():与flatten()类似,但返回视图(修改会影响原数组)。
  2. 数组拼接与分割

    • np.concatenate((arr1, arr2), axis=0):沿指定轴拼接两个数组(默认 axis=0 为行方向)。
    • np.vstack((arr1, arr2)):垂直拼接(按行),np.hstack((arr1, arr2)):水平拼接(按列)。
    • np.split(arr, indices_or_sections, axis=0):沿指定轴分割数组。
  3. 统计相关

    • np.sum(arr):计算数组元素总和。
    • np.mean(arr):计算平均值。
    • np.max(arr) / np.min(arr):计算最大值 / 最小值。
    • np.argmax(arr) / np.argmin(arr):返回最大值 / 最小值的索引。
    • np.std(arr) / np.var(arr):计算标准差 / 方差。

三、关键区别总结

  • round() vs rint():功能完全一致,均为四舍五入到最近整数(银行家舍入法)。
  • floor() vs ceil():前者向下取整,后者向上取整(方向相反)。
  • trunc() vs floor():对正数效果相同(如2.9都→2),对负数不同(-2.9trunc→-2,floor→-3)。

通过这些函数,可以高效处理 NumPy 数组的数值计算和结构调整,是数据分析和科学计算的基础工具。

6 Python 中移除列表元素的相关方法

在 Python 中,下面哪个方法or语句可以移除列表中指定位置的元素?
A pop()
B remove()
C clear()
D del
正确答案:AD

我们来详细复习一下 Python 中移除列表元素的相关方法,特别是针对 “指定位置” 的移除方式:

1. pop() 方法

  • 功能:移除列表中指定索引位置的元素,并返回该元素的值
  • 语法list.pop(index)
  • 说明
    • 如果不指定索引,默认移除列表最后一个元素
    • 示例:

      python

      运行

      fruits = ['apple', 'banana', 'cherry']
      removed = fruits.pop(1)  # 移除索引1的元素
      print(fruits)  # 输出: ['apple', 'cherry']
      print(removed)  # 输出: 'banana'
      

2. del 语句

  • 功能:删除列表中指定索引位置的元素(或整个列表)
  • 语法del list[index]
  • 说明
    • 不仅可以删除单个元素,还能删除切片(连续多个元素)
    • 示例:

      python

      运行

      fruits = ['apple', 'banana', 'cherry']
      del fruits[0]  # 移除索引0的元素
      print(fruits)  # 输出: ['banana', 'cherry']
      
      # 删除切片
      numbers = [1,2,3,4,5]
      del numbers[1:3]  # 移除索引1到2的元素
      print(numbers)  # 输出: [1,4,5]
      

其他相关方法(对比区分)

  • remove() 方法
    按 “元素值” 移除**第一个**匹配项,而不是按位置。
    示例:fruits.remove('banana')(删除第一个值为 'banana' 的元素)

  • clear() 方法
    清空列表中所有元素,使其变为空列表,不针对特定位置。
    示例:fruits.clear()(结果为 []

总结

  • 专门用于 “移除指定位置元素” 的是 pop() 方法 和 del 语句(对应题目中的 A 和 D 选项)
  • 区分关键:pop() 有返回值,del 无返回值;两者都需要指定索引位置

网站公告

今日签到

点亮在社区的每一天
去签到