文章目录
字符串
字符串定义
字符串是字符的容器,一个字符串可以存放任意数量的字符。
如,字符串:“itheima”
同元组一样,字符串是一个:无法修改的数据容器。
所以:增删改均不能完成
- 修改指定下标的字符 (如:字符串[0] = “a”)
- 移除特定下标的字符 (如:del 字符串[0]、字符串.remove()、字符串.pop()等)
- 追加字符等 (如:字符串.append())
如果必须要做,只能得到一个新的字符串,旧的字符串是无法修改的
字符串特点
作为数据容器,字符串有如下特点:
- 只可以存储字符串
- 长度任意(取决于内存大小)
- 支持下标索引
- 允许重复字符串存在
- 不可以修改(增加或删除元素等)
- 支持for循环
基本和列表、元组相同
不同与列表和元组的在于:字符串容器可以容纳的类型是单一的,只能是字符串类型。
不同于列表,相同于元组的在于:字符串不可修改
字符串索引
和其它容器如:列表、元组一样,字符串也可以通过下标进行访问
从前向后,下标从0开始
从后向前,下标从-1开始
my_str = "hello python"
print(my_str[0])#正向索引
print(my_str[-1])#反向索引
字符串常用操作
- 查询元素下标
- 字符串替换
- 字符串分割
- 字符串规整操作
- 统计元素个数
查询元素下标
语法:字符串.index(字符串)
my_str = "hello python"
print(my_str.index("o"))
字符串替换
语法:字符串.replace(字符串1,字符串2)
功能:将字符串内的全部:字符串1,替换为字符串2
注意:不是修改字符串本身,而是得到了一个新字符串
my_str = "hello python"
new_str = my_str.replace("hello", "Bye")
print(f"my_str: {my_str}")
print(f"new_str: {new_str}")
可以看到,字符串name本身并没有发生变化,而是得到了一个新字符串对象
字符串分割
语法:字符串.split(分隔符字符串)
功能:按照指定的分隔符字符串,将字符串划分为多个字符串,并存入列表对象中
注意:字符串本身不变,而是得到了一个列表对象
my_str = "hello python"
my_list = my_str.split(" ")
print(my_list)
字符串规整操作
注意:所有去字符的操作都只能去掉前后的,不能去掉中间的
- 去前后空格
语法:字符串.strip()
my_str = " hello python "
print(f"my_str: {my_str}")
my_str = my_str.strip()
print(f"my_str.strip(): {my_str}")
注意:和replace不同,使用strip后字符串会变化
- 去前后指定字符串
语法:字符串.strip(字符串)
my_str = "12hello 12 python21"
print(f"my_str: {my_str}")
my_str = my_str.strip("12")
print(f"my_str.strip(): {my_str}")
注意,传入的是“12” 其实就是:”1”和”2”都会移除,是按照单个字符。
统计元素个数
- 统计字符串中某字符串的出现次数
语法:字符串.count(字符串)
my_str = "12hello 12 python21"
print(my_str.count("12"))
- 统计字符串的长度
语法:len(字符串)
my_str = "123 abc @$% 字母歌"
print(len(my_str))
数字(1、2、3…)——字母(abcd、ABCD等)——符号(空格、!、@、#、$等)——中文
均算作1个字符,所以上述代码,结果为15
汇总
集合
由于列表、元组、字符串都支持元素重复,如果场景需要对内容做去重处理,列表、元组、字符串就不方便了。
而集合,最主要的特点就是:不支持元素的重复(自带去重功能)、并且内容无序
集合定义
和列表、元组、字符串等定义基本相同:
- 列表使用:[]
- 元组使用:()
- 字符串使用:“”
- 集合使用:{}
set1 = {"aaa", "bbb", "aaa", 123}
set2 = set({"111", "222", "111", 123})
print(set1)
print(set2)
因为要对元素做去重处理
所以无法保证顺序和创建的时候一致
集合的特点
- 可以容纳多个数据
- 可以容纳不同类型的数据(混装)
- 数据是无序存储的(不支持下标索引)
- 不允许重复数据存在
- 可以修改(增加或删除元素等)
- 支持for循环
集合的常用操作
- 添加新元素
- 删除元素
- 从集合中随机取出元素
- 清空集合
- 取出两个集合的差集
- 消除两个集合的差集
- 两个集合合并
- 查看集合的元素数量
添加新元素
语法:集合.add(元素)。将指定元素,添加到集合内
结果:集合本身被修改,添加了新元素
set1 = {"aaa", "bbb", "aaa", 123}
set1.add("hello")
删除元素
语法:集合.remove(元素),将指定元素,从集合内移除
结果:集合本身被修改,移除了元素
set1 = {"aaa", "bbb", "aaa", 123}
set1.remove("aaa")
从集合中随机取出元素
语法:集合.pop(),功能,从集合中随机取出一个元素
结果:会得到一个元素的结果。同时集合本身被修改,元素被移除
set1 = {"aaa", "bbb", "aaa", 123}
set1.pop()
清空集合
语法:集合.clear(),功能,清空集合
结果:集合本身被清空
set1 = {"aaa", "bbb", "aaa", 123}
set1.clear()
取出两个集合的差集
语法:集合1.difference(集合2),功能:取出集合1和集合2的差集(集合1有而集合2没有的)
结果:得到一个新集合,集合1和集合2不变
set1 = {"aaa", "bbb", "aaa", 123}
set2 = {"bbb", "ccc", "ddd", 123}
set3 = set1.difference(set2)
print(f"set1: {set1}")
print(f"set2: {set2}")
print(f"set3: {set3}")
消除两个集合的差集
语法:集合1.difference_update(集合2)
功能:对比集合1和集合2,在集合1内,删除和集合2不同的元素。
结果:集合1被修改,集合2不变
set1 = {"aaa", "bbb", "aaa", 123}
set2 = {"bbb", "ccc", "ddd", 123}
set3 = set1.difference_update(set2)
print(f"set1: {set1}")
print(f"set2: {set2}")
print(f"set3: {set3}")
两个集合合并
语法:集合1.union(集合2)
功能:将集合1和集合2组合成新集合
结果:得到新集合,集合1和集合2不变
set1 = {"aaa", "bbb", "aaa", 123}
set2 = {"bbb", "ccc", "ddd", 123}
set3 = set1.union(set2)
print(f"set1: {set1}")
print(f"set2: {set2}")
print(f"set3: {set3}")
查看元素集合数量
语法:len(集合)
功能:统计集合内有多少元素
结果:得到一个整数结果
set1 = {"aaa", "bbb", "aaa", 123}
print(len(set1))
总结
小练习
有如下列表对象:
my_list = [‘黑马程序员’, ‘传智播客’, ‘黑马程序员’, ‘传智播客’, ‘itheima’, ‘itcast’, ‘itheima’, ‘itcast’, ‘best’]
请:
定义一个空集合
通过for循环遍历列表
在for循环中将列表的元素添加至集合
最终得到元素去重后的集合对象,并打印输出
my_list = ['黑马程序员', '传智播客', '黑马程序员', '传智播客', 'itheima', 'itcast', 'itheima', 'itcast', 'best']
my_set = {""}
for item in my_list:
my_set.add(item)
my_set.remove("")
print(my_set)