Python数据类型全解析:字符串到集合 一、str字符串定义与特性字符串是 Python 中最常用的数据类型之一属于不可变序列用于存储 Unicode 文本。字符串一旦创建其中的字符就不能被修改但可以通过各种方法生成新的字符串对象。创建方式单引号hello双引号hello三引号可用于多行文本hello或hello使用str()函数进行类型转换常用操作与方法索引与切片支持正向索引和反向索引切片语法为[start:end:step]拼接与重复使用拼接使用*重复格式化支持 f-string、format()、%三种方式推荐使用 f-string查找与替换find()、index()、replace()判断前缀后缀startswith()、endswith()大小写转换upper()、lower()、title()、capitalize()去除空白strip()、lstrip()、rstrip()拆分与拼接split()、join()判断字符类型isdigit()、isalpha()、isalnum()、isspace()代码示例s Hello, Python World! 切片操作 print(s[2:7]) # 输出Hello print(s[::-1]) # 反转字符串 大小写转换 print(s.upper()) # 输出 HELLO, PYTHON WORLD! print(s.lower()) # 输出 hello, python world! 去除空白不会修改原字符串返回新字符串 clean s.strip() print(clean) # 输出Hello, Python World! 查找与替换 idx clean.find(Python) print(idx) # 输出7 new_s clean.replace(World, CSDN) print(new_s) # 输出Hello, Python CSDN! 拆分与拼接 words clean.split(, ) print(words) # 输出[Hello, Python World!] joined - .join(words) print(joined) # 输出Hello - Python World! 判断方法 print(clean.startswith(Hello)) # True print(clean.endswith(!)) # True print(123.isdigit()) # True f-string 格式化Python 3.6 name Alice age 25 print(f{name} is {age} years old.) # 输出Alice is 25 years old.二、list列表定义与特性列表是 Python 中最灵活的可变序列可以存储任意类型的元素且支持动态增删改查。列表中的元素按照插入顺序排列允许重复。创建方式使用方括号[1, 2, 3]使用list()函数list(abc)得到[a, b, c]列表推导式推荐[x*2 for x in range(5)]常用操作与方法索引与切片与字符串相同支持正向和反向索引添加元素append()尾部添加、insert(index, item)指定位置插入、extend()批量添加删除元素remove(value)按值删除、pop(index)按索引删除并返回、del语句排序与反转sort()原地排序、sorted()返回新列表、reverse()原地反转查找计数index()、count()列表推导式简洁高效地生成新列表支持条件过滤代码示例# 创建列表 fruits [apple, banana, orange] numbers [3, 1, 4, 1, 5, 9, 2, 6] 添加元素 fruits.append(grape) fruits.insert(1, mango) print(fruits) # 输出[apple, mango, banana, orange, grape] 删除元素 removed fruits.pop(2) print(removed) # 输出banana fruits.remove(apple) print(fruits) # 输出[mango, orange, grape] 排序会修改原列表 numbers.sort() print(numbers) # 输出[1, 1, 2, 3, 4, 5, 6, 9] numbers.sort(reverseTrue) print(numbers) # 输出[9, 6, 5, 4, 3, 2, 1, 1] 切片操作 subset numbers[2:5] print(subset) # 输出[5, 4, 3] 列表推导式 squares [x**2 for x in range(10)] print(squares) # 输出[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] evens [x for x in range(20) if x % 2 0] print(evens) # 输出[0, 2, 4, 6, 8, 10, 12, 14, 16, 18] 二维列表嵌套列表 matrix [[1, 2, 3], [4, 5, 6], [7, 8, 9]] print(matrix[1][2]) # 输出6三、tuple元组定义与特性元组与列表类似但属于不可变序列。一旦创建就不能修改其元素增、删、改均不允许。由于不可变性元组可以作为字典的键而列表不能。创建方式使用圆括号(1, 2, 3)不使用括号逗号分隔1, 2, 3单元素元组需要加逗号(1,)否则(1)会被当作整数使用tuple()函数进行转换常用操作与方法索引与切片与列表相同但只能读取不能修改解包Unpacking将元组元素赋值给多个变量支持*收集剩余元素查找计数index()、count()应用场景函数返回多个值、作为字典键、保护数据不被修改代码示例# 创建元组 point (3, 4) colors red, green, blue # 也可省略括号 single (42,) # 单元素元组逗号不能省略 print(type(single)) # 输出class tuple 索引与切片 t (10, 20, 30, 40, 50) print(t[0]) # 输出10 print(t[-1]) # 输出50 print(t[1:4]) # 输出(20, 30, 40) 元组不可修改以下操作会报错 t[0] 100 # TypeError: tuple object does not support item assignment 解包操作 a, b, c (1, 2, 3) print(a, b, c) # 输出1 2 3 使用 * 收集剩余元素 first, *rest, last (1, 2, 3, 4, 5) print(first) # 输出1 print(rest) # 输出[2, 3, 4] print(last) # 输出5 变量交换利用元组解包 x, y 10, 20 x, y y, x print(x, y) # 输出20 10 函数返回多个值本质是返回元组 def get_min_max(nums): return min(nums), max(nums) result get_min_max([3, 1, 4, 1, 5]) print(result) # 输出(1, 5) min_val, max_val result # 解包 print(min_val, max_val) # 输出1 5 元组作为字典键列表不能作为键 locations {(35.68, 139.76): Tokyo, (39.90, 116.40): Beijing} print(locations[(39.90, 116.40)]) # 输出Beijing四、dict字典定义与特性字典是 Python 中的键值对映射容器使用哈希表实现查找效率极高平均 O(1)。键必须是不可变类型如字符串、数字、元组值可以是任意类型。Python 3.7 字典保持插入顺序。创建方式使用花括号{name: Alice, age: 25}使用dict()函数dict(nameAlice, age25)字典推导式{x: x**2 for x in range(5)}使用fromkeys()创建带默认值的字典常用操作与方法访问元素d[key]键不存在会报错、d.get(key, default)安全访问修改与添加d[key] value、update()批量更新删除元素pop(key)删除并返回值、popitem()删除最后一项、del、clear()遍历keys()、values()、items()设置默认值setdefault(key, default)字典推导式高效创建字典支持条件过滤代码示例# 创建字典 person {name: Alice, age: 25, city: Beijing} 访问元素 print(person[name]) # 输出Alice print(person.get(gender, N/A)) # 输出N/A键不存在时返回默认值 修改与添加 person[age] 26 person[job] Engineer print(person) # 输出{name: Alice, age: 26, city: Beijing, job: Engineer} 删除元素 removed_age person.pop(age) print(removed_age) # 输出26 print(person) # 输出{name: Alice, city: Beijing, job: Engineer} 遍历字典 for key, value in person.items(): print(f{key}: {value}) keys()、values()、items() 返回视图对象 print(list(person.keys())) # 输出[name, city, job] print(list(person.values())) # 输出[Alice, Beijing, Engineer] 字典推导式 squares {x: x**2 for x in range(6)} print(squares) # 输出{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25} 条件过滤 even_squares {k: v for k, v in squares.items() if v % 2 0} print(even_squares) # 输出{0: 0, 2: 4, 4: 16} setdefault 用法键不存在时设置默认值 word_count {} text hello world hello python for word in text.split(): word_count.setdefault(word, 0) word_count[word] 1 print(word_count) # 输出{hello: 2, world: 1, python: 1}五、set集合定义与特性集合是无序、不重复的元素集合基于哈希表实现。集合中的元素必须是不可变类型。集合支持数学中的集合运算如并集、交集、差集等非常适合用于去重和成员关系测试。创建方式使用花括号{1, 2, 3}注意空花括号{}创建的是空字典而非空集合使用set()函数set([1, 2, 3])、set()创建空集合集合推导式{x for x in range(10) if x % 2 0}常用操作与方法添加元素add()添加单个、update()批量添加删除元素remove()元素不存在会报错、discard()安全删除、pop()随机删除一个、clear()集合运算union()或|并集、intersection()或交集、difference()或-差集、symmetric_difference()或^对称差集判断关系issubset()子集、issuperset()超集、isdisjoint()是否不相交去重应用利用集合元素不重复的特性快速去重代码示例# 创建集合 fruits {apple, banana, orange} empty_set set() # 创建空集合不能用 {}那是空字典 print(type(empty_set)) # 输出class set 添加与删除 fruits.add(grape) fruits.update([mango, kiwi]) print(fruits) fruits.discard(banana) # 安全删除不存在也不报错 print(fruits) 集合运算 a {1, 2, 3, 4, 5} b {4, 5, 6, 7, 8} print(a | b) # 并集{1, 2, 3, 4, 5, 6, 7, 8} print(a b) # 交集{4, 5} print(a - b) # 差集a有b没有{1, 2, 3} print(a ^ b) # 对称差集不同时属于两者{1, 2, 3, 6, 7, 8} 判断关系 c {1, 2} print(c.issubset(a)) # Truec是a的子集 print(a.issuperset(c)) # Truea是c的超集 print(a.isdisjoint({9, 10})) # True不相交 集合推导式 even_set {x for x in range(20) if x % 2 0} print(even_set) # 输出{0, 2, 4, 6, 8, 10, 12, 14, 16, 18} 去重应用 nums [1, 2, 2, 3, 3, 3, 4, 4, 4, 4] unique_nums list(set(nums)) print(unique_nums) # 输出[1, 2, 3, 4]顺序可能不同 成员关系测试O(1) 时间复杂度 large_set set(range(1000000)) print(999999 in large_set) # True极快

本月热点