软件测试基础十二(python变量进阶)

变量进阶

1. 变量类型

在 Python 中,主要有以下几种常见的变量类型:

  1. 数字类型:
    • 整数(int):用于表示整数值,如 1、-5、100 等。
    • 浮点数(float):用于表示带有小数部分的数值,如 3.14、-2.5、0.0 等。
    • 复数(complex):由实数部分和虚数部分组成,如 3 + 4j。
  1. 字符串类型(str):
    • 用于表示文本数据,用单引号或双引号括起来,如 "Hello, World!"、'Python is great!'等。
    • 字符串是不可变的,即一旦创建,其内容不能被修改。
  1. 列表类型(list):
    • 是一种可变的有序序列,可以包含不同类型的元素。
    • 例如:[1, 2, 3]、["apple", "banana", "orange"]、[1, "two", 3.5]等。
  1. 元组类型(tuple):
    • 是一种不可变的有序序列,可以包含不同类型的元素。
    • 例如:(1, 2, 3)、("apple", "banana", "orange")等。
  1. 字典类型(dict):
    • 用于存储键值对的数据结构,通过键来访问对应的值。
    • 例如:{"name": "John", "age": 30}等。
  1. 集合类型(set):
    • 是一种无序的、不包含重复元素的数据结构。
    • 例如:{1, 2, 3}、{"apple", "banana", "orange"}等。

2. 列表(list)

  1. 定义和特点:
    • 列表是用方括号[]括起来的一组元素,可以包含不同类型的元素。
    • 列表是可变的,意味着可以添加、删除或修改其中的元素。
    • 列表中的元素是有序的,可以通过索引访问特定位置的元素。
  1. 常见操作:
    • 索引和切片:可以通过索引访问列表中的单个元素,索引从 0 开始。也可以使用切片操作获取列表的一部分。
      • 例如:my_list = [1, 2, 3, 4, 5],my_list[2]返回 3,my_list[1:4]返回[2, 3, 4]。
    • 添加元素 :可以使用append()方法在列表末尾添加一个元素,使用extend()方法将另一个列表的元素添加到当前列表中,使用insert()方法在指定位置插入一个元素。
      • 例如:my_list.append(6),my_list.extend([7, 8]),my_list.insert(2, 9)。
    • 删除元素 :可以使用remove()方法删除指定值的元素,使用pop()方法删除并返回指定位置的元素,使用del语句删除指定位置的元素。
      • 例如:my_list.remove(3),removed_element = my_list.pop(1),del my_list[2]。
    • 排序 :可以使用sorted()函数对列表进行排序并返回一个新的列表,或者使用sort()方法直接在原列表上进行排序。
      • 例如:sorted_list = sorted(my_list),my_list.sort()。

3. 公共方法

公共方法是适用于多种数据类型的通用操作方法。以下是一些常见的公共方法:

  1. len()函数:
    • 返回对象的长度(元素个数)。
    • 例如:len([1, 2, 3])返回 3,len("Hello")返回 5。
  1. max()和min()函数:
    • 分别返回可迭代对象中的最大值和最小值。
    • 例如:max([3, 5, 2])返回 5,min("abc")返回"a"。
  1. sum()函数(仅适用于数字序列):
    • 返回可迭代对象中所有元素的总和。
    • 例如:sum([1, 2, 3])返回 6。
  1. enumerate()函数:
    • 用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标。
    • 例如:for index, value in enumerate(["apple", "banana", "orange"]):,会依次输出索引和对应的值。

4. 元组(tuple)

  1. 定义和特点:
    • 元组是用圆括号()括起来的一组元素,可以包含不同类型的元素。
    • 元组是不可变的,一旦创建,其内容不能被修改。
    • 元组中的元素是有序的,可以通过索引访问特定位置的元素。
  1. 常见操作:
    • 索引和切片:与列表类似,可以通过索引访问元组中的单个元素,也可以使用切片操作获取元组的一部分。
      • 例如:my_tuple = (1, 2, 3, 4, 5),my_tuple[2]返回 3,my_tuple[1:4]返回(2, 3, 4)。
    • 解包:可以将元组中的元素分别赋值给多个变量。
      • 例如:a, b, c = (1, 2, 3),此时a的值为 1,b的值为 2,c的值为 3。

5. 集合(set)的使用

  1. 定义和特点:
    • 集合是一种无序的、不包含重复元素的数据结构。用花括号{}或set()函数来创建集合。
    • 例如:my_set = {1, 2, 3}或my_set = set([1, 2, 3])。
  1. 常见操作:
    • 添加元素 :使用add()方法添加单个元素,使用update()方法添加多个元素。
      • 例如:my_set.add(4),my_set.update([5, 6])。
    • 删除元素 :使用remove()方法删除指定元素,如果元素不存在会引发错误;使用discard()方法删除指定元素,如果元素不存在不会引发错误。
      • 例如:my_set.remove(3),my_set.discard(4)。
    • 集合运算:可以进行并集、交集、差集等运算。
      • 例如:
        • 并集:set1 | set2或set1.union(set2)。
        • 交集:set1 & set2或set1.intersection(set2)。
        • 差集:set1 - set2或set1.difference(set2)。

6. 循环遍历字典

  1. 遍历键:
    • 使用keys()方法获取字典的所有键,然后进行遍历。

    • 例如:

      my_dict = {"name": "Alice", "age": 30, "city": "New York"}
      for key in my_dict.keys():
      print(key)

  1. 遍历值:
    • 使用values()方法获取字典的所有值,然后进行遍历。

    • 例如:

      for value in my_dict.values():
      print(value)

  1. 遍历键值对:
    • 使用items()方法获取字典的所有键值对,然后进行遍历。每一对键值对以元组的形式返回。

    • 例如:

      for key, value in my_dict.items():
      print(f"{key}: {value}")

7. 字典中读取键和值的方法

  1. 通过键获取值:
    • 使用方括号[]或get()方法。
    • 例如:value = my_dict["name"]或value = my_dict.get("name")。如果键不存在,方括号会引发KeyError错误,而get()方法会返回None(可以指定默认值)。
  1. 检查键是否存在:
    • 使用in关键字或not in关键字。
    • 例如:if "name" in my_dict:或if "name" not in my_dict:。

8. for循环遍历字符串

  1. 遍历每个字符:
    • 可以直接对字符串进行遍历,每次循环会得到一个字符。

    • 例如:

      my_string = "Hello"
      for char in my_string:
      print(char)

9. 字符串的常用方法

  1. 查找方法:
    • find():查找子字符串在字符串中的首次出现位置,如果找不到则返回 -1。
    • index():与find()类似,但如果找不到子字符串会引发ValueError错误。
    • 例如:my_string = "Hello, World!",my_string.find("World")返回 7,my_string.index("Hello")返回 0。
  1. 分割方法:
    • split():根据指定的分隔符将字符串分割成一个列表。
    • 例如:my_string = "apple,banana,orange",my_string.split(",")返回["apple", "banana", "orange"]。
  1. 替换方法:
    • replace():将字符串中的一部分替换为另一个字符串。
    • 例如:my_string = "Hello, World!",my_string.replace("World", "Python")返回"Hello, Python!"。
  1. 大小写转换方法:
    • upper():将字符串转换为大写。
    • lower():将字符串转换为小写。
    • capitalize():将字符串的首字母转换为大写,其余字母转换为小写。
    • 例如:my_string = "hello, world!",my_string.upper()返回"HELLO, WORLD!",my_string.lower()返回"hello, world!",my_string.capitalize()返回"Hello, world!"。

10. 字符串切片

  1. 基本语法:
    • 与列表切片类似,字符串切片的语法是string[start:stop:step],其中start表示起始索引(包含在切片结果中),stop表示结束索引(不包含在切片结果中),step表示步长(可选参数,默认为 1)。
  1. 示例:
    • 例如:my_string = "Hello, World!",my_string[7:12]返回"World",my_string[::2]返回"Hlo ol!"。

11. 多维列表

在 Python 中,多维列表是指包含一个或多个嵌套列表的列表结构,可以用来表示多维数组或矩阵等数据结构。

11.1. 定义和创建多维列表

  1. 直接赋值法:
    • 可以通过直接在方括号中嵌套方括号来创建多维列表。
    • 例如,创建一个 2x2 的二维列表:matrix = [[1, 2], [3, 4]]。
    • 这里matrix是一个包含两个子列表的列表,每个子列表又包含两个元素,相当于一个 2x2 的矩阵。
  1. 循环创建法:
    • 可以使用循环来动态地创建多维列表。

    • 例如,创建一个 3x3 的二维列表,初始值都为 0:

      matrix = []
      for i in range(3):
      row = []
      for j in range(3):
      row.append(0)
      matrix.append(row)

    • 这段代码首先创建一个空列表matrix,然后通过两层循环分别创建每一行的列表,并将其添加到matrix中。

11.2. 访问多维列表中的元素

  1. 索引访问:
    • 多维列表中的元素可以通过多个索引来访问。
    • 例如,对于上面创建的matrix列表,matrix[1][2]表示访问第二行第三列的元素(索引从 0 开始)。
  1. 遍历多维列表:
    • 可以使用嵌套的循环来遍历多维列表中的每个元素。

    • 例如,遍历上面的matrix列表并输出每个元素:

      for row in matrix:
      for element in row:
      print(element, end=' ')
      print()

    • 这段代码首先遍历每一行的列表,然后在每一行中遍历每个元素并输出。

11.3. 多维列表的应用场景

  1. 表示矩阵和二维数据:
    • 多维列表可以很方便地表示矩阵和二维数据结构。例如,在图像处理中,可以用多维列表来表示图像的像素值;在游戏开发中,可以用多维列表来表示游戏地图等。
  1. 存储和处理多维数据:
    • 当需要处理多维数据时,多维列表可以提供一种灵活的数据结构。例如,在数据分析中,可以用多维列表来存储和处理多维数据集;在机器学习中,可以用多维列表来表示特征矩阵等。
  1. 动态数据结构:
    • 由于多维列表是可变的,可以根据需要动态地添加、删除或修改元素,因此在需要动态数据结构的场景中非常有用。例如,可以用多维列表来表示动态的游戏场景或数据表格等。
相关推荐
宸津-代码粉碎机3 小时前
OpenAI 连夜迎战 Grok Bot 和 Muse:AI 智能体从 “会聊天” 到 “能办事”,现在入场还来得及吗
java·大数据·人工智能·分布式·python
Y3815326623 小时前
SERP API 计费口径:credits_charged、执行失败扣费与退款边界
python·搜索引擎
蒸鱼Yuzheng5 小时前
设备端性能工件可靠导出:断点续传、哈希、manifest 与失败恢复
android·自动化测试·python·adb·数据完整性
YoungStudyAI5 小时前
QA的下一个自动化阶段,可能不是再写更多脚本,而是设计测试Agent
运维·自动化
金八梭6 小时前
车辆能源种类
自动化·车辆工程·电气工程
圆圆讲门店6 小时前
挑选同城获客服务机构时需要考量的核心因素都有哪些?
大数据·网络·人工智能·python
傻啦嘿哟6 小时前
Python的默认参数把我坑惨了,原来写[]和写None的区别这么大
开发语言·python·机器学习
微小冷6 小时前
Python凸优化cvxpy初步
python·机器人·凸优化·数学规划·cvxpy
在世修行6 小时前
干货:显式映射 vs 自动判据
python·插件
xzal126 小时前
Python之简单理解栈和队列
python