JDK17升级后,Hutool解密小程序数据报错?手把手教你两种修复方案(含PKCS5/7区别详解)
2026/6/16 1:55:53
目录
前言
一、字符串
1.字符串的定义
2.字符串的切片
3.字符串的操作方法
查找方法
修改方法
判断方法
补充
二、列表
1.列表的定义
2.列表的相关操作
查操作
增操作
删操作
改操作
三、元组
1.元组的定义
2.元组的应用场景
查询方法
总结
在Python编程的舞台上,字符串、列表和元组如同三位各具特长的演员:字符串是不可变的文本诗人,列表是灵活多变的数据管家,元组是稳定可靠的数字契约。它们虽都是序列家族成员,却以不同方式演绎着数据存储与处理的精髓,共同构建了Python数据处理的基础架构。理解它们的特性与差异,是掌握Python编程艺术的关键第一步。
字符串是 Python 中最常用的数据类型。我们一般使用引号来创建字符串。创建字符串很简单,只要为变量分配一个值即可。
str1 = 'abcdefg' str2 = "hello world" print(type(str1)) # <class 'str'> print(type(str2)) # <class 'str'>number = '0123456789' # 1、从2到5开始切⽚,步⻓为1 print(number[2:5:1]) print(number[2:5]) # 2、只有结尾的字符串切⽚:代表从索引为0开始,截取到索引为5的位置(不包含索引为5的数据) print(number[:5]) # 3、只有开头的字符串切⽚:代表从起始位置开始,已知截取到字符串的结尾 print(number[1:]) # 4、获取或拷⻉整个字符串 print(number[:]) # 5、调整步阶:类似求偶数 print(number[::2]) # 6、把步阶设置为负整数:类似字符串翻转 print(number[::-1]) # 7、起始位置与结束位置都是负数 print(number[-4:-1]) # 8、结束字符为负数,如截取012345678 print(number[:-1])# 定义⼀个字符串 str1 = 'hello world hello linux hello python' # 查找linux⼦串是否出现在字符串中 print(str1.find('linux')) # 18 # 在str1中查找不存在的⼦串 print(str1.find('and')) # -1 # 定义新的⼀个字符串 str1 = 'apple, banana, orange' # 判断apple是否出现在字符串str1中 print(str1.index('apple')) # 0 print(str1.index('pineapple')) # 报错str1 = 'hello linux and hello linux' # 把字符串中所有linux字符替换为python print(str1.replace('linux', 'python')) # hello python and hello python # 把字符串中的第⼀个linux进⾏替换为python print(str1.replace('linux', 'python', 1)) # hello python and hello linux # 把and字符串替换为&& print(str1.replace('and', '&&')) # hello linux && hello linux str1 = 'apple-banana-orange' print(str1.split('-')) # ['apple', 'banana', 'orange'] str1 = 'hello linux and hello linux' print(str1.title()) # Hello Linux And Hello Linux print(str1.upper()) # HELLO LINUX AND HELLO LINUX print(str1.lower()) # hello linux and hello linuxstr1 = 'linux' str2 = '123' print(str1.isalpha()) # True print(str1.isdigit()) # False print(str2.isalpha()) # False print(str2.isdigit()) # Truelist1 = ['apple', 'banana', 'orange'] print('-'.join(list1)) # apple-banana-orange列表序列名称 = [列表中的元素1, 列表中的元素2, 列表中的元素3, ...]
例子:
list1 = ['apple', 'banana', 'pineapple'] # list列表类型⽀持直接打印 print(list1) # ['apple', 'banana', 'pineapple'] # 打印列表的数据类型 print(type(list1)) # <class 'list'>列表的作用是一次性存储多个数据,程序员可以对这些数据进行的操作有:
增、删、改、查
# 1、查找某个元素在列表中出现的位置(索引下标) list1 = ['apple', 'banana', 'pineapple'] print(list1.index('apple')) # 0 # print(list1.index('peach')) # 报错 # 2、count()⽅法:统计元素在列表中出现的次数 list2 = ['刘备', '关⽻', '张⻜', '关⽻', '赵云'] # 统计⼀下关⽻这个元素在列表中出现的次数 print(list2.count('关⽻')) # 2 # 3、in⽅法和not in⽅法(⿊名单系统) list3 = ['192.168.1.15', '10.1.1.100', '172.35.46.128'] if '10.1.1.100' in list3: print('⿊名单IP,禁⽌访问') else: print('正常IP,访问站点信息')names = ['孙悟空', '唐僧', '猪⼋戒'] # 在列表的尾部追加⼀个元素"沙僧" names.append('沙僧') # 打印列表 print(names) # ['孙悟空', '唐僧', '猪⼋戒', '沙僧'] list1 = ['Tom', 'Rose', 'Jack'] # 1、使⽤extend⽅法追加元素"Jerry" # names.extend("Jerry") # print(names) # 2、建议:使⽤extend⽅法两个列表进⾏合并 list2 = ['Hack', 'Jerry'] list1.extend(list2) print(list1) # ['Tom', 'Rose', 'Jack', 'Hack', 'Jerry'] names = ['薛宝钗', '林黛⽟'] # 在薛宝钗和林黛⽟之间,插⼊⼀个新元素"贾宝⽟" names.insert(1, '贾宝⽟') print(names) # ['薛宝钗', '贾宝⽟', '林黛⽟']names = ['Tom', 'Rose', 'Jack', 'Jerry'] # 删除Rose del names[1] # 打印列表 print(names) # ['Tom', 'Jack', 'Jerry'] names = ['貂蝉', '吕布', '董卓'] del_name = names.pop() # 或 # del_name = names.pop(1) print(del_name) # 董卓 print(names) # ['貂蝉', '吕布'] fruit = ['apple', 'banana', 'pineapple'] fruit.remove('banana') print(fruit) # ['apple', 'pineapple']list1 = ['貂蝉', '⼤乔', '⼩乔', '⼋戒'] # 修改列表中的元素 list1[3] = '周瑜' print(list1) # ['貂蝉', '⼤乔', '⼩乔', '周瑜'] list2 = [1, 2, 3, 4, 5, 6] list2.reverse() print(list2) # [6, 5, 4, 3, 2, 1] list3 = [10, 50, 20, 30, 1] list3.sort() # 升序(从⼩到⼤) # 或 # list3.sort(reverse=True) # 降序(从⼤到⼩) print(list3) # [1, 10, 20, 30, 50]元组特点:定义元组使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型。
基本语法:
# 多个数据元组 tuple1 = (10, 20, 30) # 单个数据元组 tuple2 = (10,) # 如果定义的元组只有⼀个数据,那么这个数据后⾯也要添加逗号,否则数据类型为唯⼀的这个数据的数据类型。元组的应用场景:
name = '张三' age = 18 address = '北京' print('姓名:%s,年龄:%d,家庭住址:%s' % (name, age, address)) # 姓名:张三,年龄:18,家庭住址:北京由于元组中的数据不允许直接修改,所以其操作方法大部分为查询方法。
str1 = (1, 2, 3, 4, 5, 3, 3) print(str1[1]) # 2 print(str1.index(2)) # 1 print(str1.count(3)) # 3Python序列三剑客各司其职:字符串专注不可变文本,列表擅长动态数据管理,元组守护不可变结构。掌握其核心特性与适用场景,是编写高效、清晰Python代码的基石。选择正确的工具,组合运用,便能优雅解决大多数数据组织问题。从理解到熟练运用,是每一位Python开发者精进之路上的关键一步。