计算机二级复习

选择题部分

列表与元组

在 Python 中,列表元组都是用于存储有序数据的序列结构。


1. 列表

定义与特性
  • 可变:列表中的元素可以动态修改(添加、删除、替换)。
  • 使用方括号 [] 表示,元素用逗号分隔。
  • 元素类型不限:可以包含任意类型的数据(整数、字符串、列表、元组等)。
常用操作
  • 创建列表

    fruits = ["apple", "banana", "cherry"]
    mixed = [1, "hello", 3.14, [4, 5]]
    
  • 访问元素

    print(fruits[0])    # 输出 "apple"
    print(fruits[-1])   # 输出 "cherry"(负数索引从末尾开始)
    
  • 修改元素

    fruits[1] = "orange"
    print(fruits)       # 输出 ["apple", "orange", "cherry"]
    
  • 添加元素

    fruits.append("grape")       # 在末尾添加单个元素
    fruits.extend(["mango", "kiwi"])  # 扩展列表
    fruits.insert(1, "lemon")    # 在指定位置插入元素
    
  • 删除元素

    del fruits[2]           # 删除指定索引的元素
    fruits.remove("apple")  # 根据值删除元素
    fruits.pop()            # 删除并返回最后一个元素
    
  • 其他常用方法

    print(len(fruits))      # 获取列表长度
    print(fruits.index("orange"))  # 获取元素索引
    fruits.sort()           # 对列表排序
    fruits.reverse()        # 反转列表
    
适用场景
  • 需要频繁修改数据(如动态添加、删除元素)。
  • 存储一组有序但可能变化的数据(如用户输入、临时计算结果)。

2. 元组

定义与特性
  • 不可变:元组一旦创建,其元素不能修改(无法添加、删除或替换)。
  • 使用圆括号 () 表示,元素用逗号分隔(有时可省略括号)。
  • 元素类型不限:与列表类似,但通常用于存储固定数据。
常用操作
  • 创建元组

    coordinates = (3, 5)
    mixed = (1, "hello", 3.14, [4, 5])  # 元组中可以包含可变对象(如列表)
    
  • 访问元素

    print(coordinates[0])    # 输出 3
    print(coordinates[-1])   # 输出 5
    
  • 尝试修改元组(会报错)

    coordinates[0] = 10  # 报错:'tuple' object does not support item assignment
    
  • 其他操作

    print(len(coordinates))  # 获取元组长度
    print(3 in coordinates)  # 检查元素是否存在
    
适用场景
  • 存储不可变的数据(如配置参数、数学坐标)。
  • 作为字典的键(因为元组不可变,可哈希)。
  • 保护数据不被意外修改(例如函数返回多个值时,用元组更安全)。

3. 列表与元组的对比

特性 列表(List) 元组(Tuple)
可变性 可变(支持增删改) 不可变(创建后无法修改)
定义符号 [] ()
性能 稍慢(动态分配内存) 更快(固定内存,访问效率高)
适用场景 动态数据、频繁修改 固定数据、保护数据不可变性

字符串处理

  • 字符串的编码有多种, Python \text{Python} Python使用了 Unicode \text{Unicode} Unicode码和 ASCII \text{ASCII} ASCII码。其中实现 Unicode \text{Unicode} Unicode普遍使用的方法是 UTF-8 \text{UTF-8} UTF-8实际上, Unicode \text{Unicode} Unicode码与 ASCII \text{ASCII} ASCII等价,而 UTF-8 \text{UTF-8} UTF-8 Unicode \text{Unicode} Unicode的传输格式
  • 我们可以通过ordchr函数实现 Unicode \text{Unicode} Unicode码和 ASCII \text{ASCII} ASCII码之间的相互转化。
print(ord("a"),ord("A"))
print(chr(97),chr(65))

Remark:数字 < 大写字母 < 小写字母

  • 字符串的索引与切片:
  1. 字符串索引是指通过指定字符在字符串中的位置来访问该字符。Python 中的字符串索引从 0 开始,即第一个字符的索引为 0,第二个字符的索引为 1,以此类推。同时,Python 还支持负数索引,负数索引从 -1 开始,表示字符串的最后一个字符,倒数第二个字符的索引为 -2,依此类推。
  2. 切片操作使用 str[start:stop:step]
# 定义一个字符串
s = "Hello, World!"

# 字符串索引
print("使用正索引访问字符:")
print(s[0])  # 输出 'H'
print(s[7])  # 输出 'W'

print("使用负索引访问字符:")
print(s[-1])  # 输出 '!'
print(s[-6])  # 输出 'W'

# 字符串切片
print("字符串切片操作:")
print(s[0:5])  # 输出 'Hello'
print(s[7:])  # 输出 'World!'
print(s[-6:-1])  # 输出 'World'
print(s[0:12:2])  # 输出 'Hlo ol'
print(s[::-1])  # 输出 '!dlroW ,olleH'
  • 字符串操作
操作类型 描述 示例代码 结果
拼接 将多个字符串连接成一个字符串 s1 = "Hello"; s2 = " World"; result = s1 + s2 Hello World
重复 重复字符串指定的次数 s = "Hi"; result = s * 3 HiHiHi
索引 访问字符串中指定位置的字符 s = "Python"; char = s[2] t
切片 从字符串中提取子字符串 s = "Python"; sub_s = s[1:4] yth
长度 获取字符串的长度 s = "Hello"; length = len(s) 5
查找 查找子字符串在字符串中首次出现的位置 s = "Hello"; pos = s.find("l") 2
替换 用新的子字符串替换旧的子字符串 s = "Hello"; new_s = s.replace("l", "L") HeLLo
分割 根据指定的分隔符将字符串分割成列表 s = "a,b,c"; lst = s.split(",") ['a', 'b', 'c']
连接 将列表中的字符串元素连接成一个字符串 lst = ['a', 'b', 'c']; s = ','.join(lst) a,b,c
大小写转换 转换字符串的大小写 s = "Hello"; upper_s = s.upper(); lower_s = s.lower() HELLOhello
去除空白 去除字符串开头和结尾的空白字符 s = " Hello "; new_s = s.strip() Hello
判断开头或结尾 判断字符串是否以指定的子字符串开头或结尾 s = "Hello"; start = s.startswith("He"); end = s.endswith("lo") TrueTrue
判断类型 判断字符串是否只包含特定类型的字符 s1 = "123"; s2 = "abc"; is_digit = s1.isdigit(); is_alpha = s2.isalpha() TrueTrue

在文本处理中会常常用到以下几个函数:

  1. 查找字符串中某一个字符出现在字符串的哪里
  2. 判断数字,字母
  3. 去除空白
  4. 按某个方法分割字符串返回列表
  5. 将列表按某符号连接在一起
  • 字符串的逻辑操作
    这里分为关系操作与成员关系操作:
  1. 关系操作:字符串与字符串比较大小遵循以下规则
  • 比较对应位置字符的 Unicode 码点
  • 长度不同但前缀相同的字符串空格补全后逐一比较
  1. 成员关系操作:str1 [not] in str2
  • 字符串方法还有很多:
  1. 字符串大小写转换
    s.upper:大写
    s.lower:小写
    s.swapace:字母大小写转化
    s.capitalize():首字母大写其余小写
    s.title():首字母大写
  2. 字符串对齐处理
    s.ljust(width[,fillchr]):左对齐,默认空格补全
    s.rjust(width[,fillchr])::右对齐,默认空格补全
    s.center(width[,fillchr])::中对齐,默认空格补全
    s.zfill(sidth)::右对齐,默认0补全
  3. 字符串搜索
    s.find(substr[,start[,end]]):没找到会返回 − 1 -1 1
    s.index(substr[,start[,end]]):没找到会返回运行错误
    s.rfind(substr[,start[,end]]):倒着找
    s.rindex(substr[,start[,end]]):没找到会返回运行错误
    s.count(substr[,start[,end]]):计算substr出现次数
  4. 字符串的替换
    s.replace(oldstr,newstr[,count]):把s中的oldstr替换为newstr
    s.strip([chars]):s前后的chrs里面有的全去掉
    s.lstrip([chars]):s左的chrs里面有的全去掉
    s.rstrip([chars])s右的chrs里面有的全去掉
    s.expandtabs([tabsize]):把s中的tab字符替换为空格,默认八个空格。
  5. 字符串的拆分与组合
    s.split([sep[,maxsplit]]):以sep为分隔符,maxsplit为最大分割次数,默认-1,无穷次
    s.jion(seq):连接seq序列为字符串
  6. 字符串的测试类型

方法名 描述 示例 结果
isalpha() 检查字符串是否全为字母(无数字或符号)。 "Hello".isalpha() True
isdigit() 检查字符串是否全为数字。 "1234".isdigit() True
isalnum() 检查字符串是否全为字母或数字(无符号)。 "a1b2".isalnum() True
isspace() 检查字符串是否全为空白字符(空格、制表符、换行符等)。 " \n".isspace() True

方法名 描述 示例 结果
islower() 检查字符串中的所有字母是否全为小写。 "hello".islower() True
isupper() 检查字符串中的所有字母是否全为大写。 "HELLO".isupper() True
istitle() 检查字符串是否为标题格式(每个单词首字母大写,其余小写)。 "Hello World".istitle() True

方法名 描述 示例 结果
startswith(prefix) 检查字符串是否以指定前缀开头。 "Hello".startswith("He") True
endswith(suffix) 检查字符串是否以指定后缀结尾。 "World!".endswith("!") True

方法名 描述 示例 结果
isdecimal() 检查字符串是否全为十进制数字(适用于 Unicode 数字字符)。 "①②③".isdecimal() False
isnumeric() 检查字符串是否全为数字字符(包括分数、下标等特殊数字符号)。 "½".isnumeric() True
isidentifier() 检查字符串是否是有效的 Python 标识符(变量名、函数名等)。 "my_var".isidentifier() True

字典与集合

字典(Dictionary)

定义与特性
  • 键值对存储:字典是一种无序的键值对集合,通过键来访问对应的值。键必须是唯一且不可变的(如字符串、数字、元组),而值可以是任意类型的数据。
  • 使用花括号 {} 表示,键和值之间用冒号 : 分隔,键值对之间用逗号分隔。
常用操作
  • 创建字典
# 直接创建
student = {'name': 'Alice', 'age': 20, 'grade': 'A'}
# 使用 dict() 函数创建
empty_dict = dict()
person = dict(name='Bob', city='New York')
  • 访问元素
print(student['name'])  # 输出 'Alice'
# 使用 get() 方法访问,若键不存在,返回默认值
print(student.get('height', 'Not provided'))  # 输出 'Not provided'
  • 修改元素
student['age'] = 21  # 修改已有的键对应的值
student['gender'] = 'Female'  # 添加新的键值对
  • 删除元素
del student['grade']  # 删除指定键的键值对
age = student.pop('age')  # 删除指定键的键值对并返回该值
  • 其他常用方法
print(len(student))  # 获取字典中键值对的数量
print('name' in student)  # 检查键是否存在于字典中
keys = student.keys()  # 获取所有键
values = student.values()  # 获取所有值
items = student.items()  # 获取所有键值对
适用场景
  • 存储具有映射关系的数据,如学生信息(姓名 - 成绩)、配置信息(参数名 - 参数值)等。
  • 快速查找和访问数据,通过键可以在 O(1) 时间复杂度内找到对应的值。

集合(Set)

定义与特性
  • 无序且唯一:集合是一种无序的数据结构,其中的元素是唯一的,不会有重复元素。
  • 使用花括号 {}set() 函数表示,元素之间用逗号分隔。需要注意的是,创建空集合只能使用 set(),因为 {} 表示的是一个空字典。
常用操作
  • 创建集合
# 直接创建
fruits = {'apple', 'banana', 'cherry'}
# 使用 set() 函数创建
empty_set = set()
numbers = set([1, 2, 3, 2])  # 重复元素会被自动去除
  • 添加元素
fruits.add('grape')  # 添加单个元素
fruits.update({'mango', 'kiwi'})  # 添加多个元素
  • 删除元素
fruits.remove('apple')  # 删除指定元素,若元素不存在会报错
fruits.discard('banana')  # 删除指定元素,若元素不存在不会报错
  • 集合运算
set1 = {1, 2, 3}
set2 = {3, 4, 5}
union = set1.union(set2)  # 并集
intersection = set1.intersection(set2)  # 交集
difference = set1.difference(set2)  # 差集
适用场景
  • 去除列表中的重复元素,可将列表转换为集合再转换回列表。
  • 进行集合运算,如判断两个集合是否有交集、求并集等。

字典与集合的对比

特性 字典(Dictionary) 集合(Set)
存储形式 键值对 单一元素
元素唯一性 键必须唯一 元素必须唯一
访问方式 通过键访问值 不能通过索引或键访问,只能遍历
用途 存储映射关系数据 去重和集合运算

你可能感兴趣的:(python,python)