在python中,序列是一组按照顺序排列的值“数据集合”,字符串、列表、元组都是序列类型,其优点是支持索引(类似C的数组下标)和切片的操作。
特征:第一个正索引为0,指向最左端,第一个索引为负数指向最右端。
切片:可根据下标获取对象任意部分的数据
切片操作规则[N:M:L]
N:为起始位置,输出时是包含此下标元素的
M:为结束位置,输出时不包含此下标元素
L:步长,即取元素的间隔
python中 如果str的长度为5,那么str[-1] 与 str[4] 的含义是相同的,负号表示倒着取数据
一、字符串
1.1 字符串复制
可直接赋值,id()函数可以查看对象的内存地址。
c=' hello '
#字符串复制 id() 函数可以查看一个对象的内存地址
print("c的内存地址是%d"%id(c))
b=c #赋值之后内存相等
print("b的内存地址是%d"%id(b))
print(b)
1.2 字符串首字母变大写 capitalize()
name='zxl'
print('首字母变大写%s'%name.capitalize()) #首字母变大写转换 运行结果 “首字母变大写Zxl”
1.3 去除空格 strip()、lstrip()、rstrip()
c=' hello '
print('删除全部空格%s'%c.strip()) #运行结果 “删除全部空格hello” 说明这里只能去除字符串左右两边的空格,不会去掉字符串中间的空格
print('删除左边空格%s'%c.lstrip()) #运行结果 “删除左边空格hello ” 说明这里只能去除字符串左右两边的空格,不会去掉字符串中间的空格
print('删除右边空格%s'%c.rstrip()) #运行结果 “删除右边空格 hello” 说明这里只能去除字符串左右两边的空格,不会去掉字符串中间的空格
1.4 检测字符串中是否包含子字符串find() 、index()
find()函数:
a='I love China'
print(a.find('i')) #返回内容坐在的内存下标,若没有找到返回-1
#返回结果 -1
index()函数:
a='I love China'
print(a.index('C')) #检测主字符串中是否包含子字符串,若没有找到相应的数据程序会报异常
两个函数都是查找字符串包含,区别是find()函数没找到子字符串返回-1,index()函数没找到相应的子字符串程序则会编译出错。
1.5 检测字符串中的开头/结尾startswith()、endswith()
a='I love China'
print(a.startswith('i')) #检测字符串是否以某字符开头,是返回True 不是返回False
print(a.endswith('a')) #检测字符串是否以某字符结尾,是返回True 不是返回False
1.6 字符串的大小写操作
1.6.1 lower字符串全部变小写
a='I love China'
print(a.lower()) #字符串内容全部变小写
#运行结果 i love china
1.6.2 upper字符串全部变小写
a='I love China'
print(a.upper()) #字符串内容全部变大写
#运行结果 I LOVE CHINA
1.6.3 swapcase字符串大小写互换
a='I love China'
print(a.swapcase()) #字符串内容大小写互换
#运行结果 i LOVE cHINA
1.7 字符串检查
1.7.1 检测字符串中的内容是否全部为数字和字母 isalnum
a='I love China'
print(a.isalnum()) #检测字符串中的内容是否全部位数字和字母,是返回True 不是返回False
#返回结果 False
因为字符串中有空格所以返回false
1.7.2 检测字符串中的内容是否全部为字母 isalpha
name='zxl'
print(name.isalpha()) #检测字符串中的内容是否全部位字母,是返回True 不是返回False
#返回 True
1.7.3 检测字符串中的内容是否全部为数字isdigit
name='zxl'
print(name.isdigit()) #检测字符串中的内容是否全部位数字,是返回True 不是返回False
#返回 False
1.7.4 检测字符串中的内容是否全部为数字islower
name='zxl'
print(name.islower()) #检测字符串中的内容是否全部小写,是返回True 不是返回False
1.8 字符串切片
str='hello word'
print(str[2:5]) #取下标2~4 输出结果 “llo”
print(str[2:]) #取下标2~结束 输出结果 “llo word”
print(str[:7]) #取下标~6结束 输出结果 “hello w”
二、列表
list是python中非常重要的数据结构,是一个有序的数据集合。
1.支持增删改查
2.列表中的数据是可以变化的【数据线可以变,内存地址不会改变】
3.用[]来表示列表类型,数据项之间用逗号分隔,注意数据项可以是任何类型的数据(数字、列表、字符串等)
4.支持索引和切片操作
2.1 列表定义
#空列表 li=[]
li=['abc',123,12.52,True,"你好"]
print(type(li)) #输出数据类型 输出结果<class 'list'>
print(len(li)) #输出列表内的数据个数 输出结果5
len函数可以返回对象(字符、列表、元组等)长度或项目个数。
2.2 列表切片---查
li=['abc',123,12.52,True,"你好"]
print(li) #输出全部元素 输出内容:['abc', 123, 12.52, True, '你好']
print(li[0]) #输出下表0 输出内容:abc
print(li[0:2]) #输出下表0~1 输出内容:['abc', 123]
print(li[1:2]) #输出下表1~1 输出内容:[123]
print(li[1:]) #输出下表1~最后 输出内容:[123, 12.52, True, '你好']
print(li[:3]) #输出下表开头~2 输出内容:['abc', 123, 12.52]
print(li[::-1]) #列表倒叙输出 输出内容:['你好', True, 12.52, 123, 'abc']
print(li*3) #输出3次列表内容 输出内容:['abc', 123, 12.52, True, '你好', 'abc', 123, 12.52, True, '你好', 'abc', 123, 12.52, True, '你好']
2.2 列表操作---增
2.2.1 列表中再追加一个元素append
li=['abc',123,12.52,True,"你好"]
li.append(['ddd','fff']) #列表中再追加一个元素
#输出内容: ['abc', 123, 12.52, True, '你好', ['ddd', 'fff']]
2.2.2 列表中再追加多个元素extend
li= ['abc', 123, 12.52, True, '你好', ['ddd', 'fff']]
li.extend([1,2,3,4,5,6,7]) #列表中批量添加元素
#输出内容:['abc', 123, 12.52, True, '你好', ['ddd', 'fff'], 1, 2, 3, 4, 5, 6, 7]
2.2.3 列表末尾添加新的元素append()
li=['abc', 123, 12.52, True, '你好', ['ddd', 'fff'], 1, 2, 3, 4, 5, 6, 7]
li.append(8888) #列表中末尾再追加一个数字
#输出内容: ['abc', 123, 12.52, True, '你好', ['ddd', 'fff'], 8888]
2.2.4 指定对象插入列表的指定位置insert()
li=['abc', 123, 12.52, True, '你好', ['ddd', 'fff'], 1, 2, 3, 4, 5, 6, 7, 8888]
li.insert(1,'new') #列表中下表1的位置插入内容
#输出内容:['abc', 'new', 123, 12.52, True, '你好', ['ddd', 'fff'], 1, 2, 3, 4, 5, 6, 7, 8888]
2.3 列表操作---删
2.3.1 切片删除方式
ls=list(range(10,20)) #生成10~19的整数做完列表元素放入列表s中
print(ls) #[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
del ls[0] #删除列表下标0的内容 输出内容: [11, 12, 13, 14, 15, 16, 17, 18, 19]
del ls[1:3] #删除列表下标1~2的内容 输出内容: [11, 14, 15, 16, 17, 18, 19]
2.3.2 删除列表中的指定内容remove()
ls=list(range(10,20)) #生成10~19的整数做完列表元素放入列表s中
print(ls) #[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
ls.remove(18) #删除列表中的指定内容,若列表中差不多内容,则编译出错 输出内容: [10, 11, 12, 13, 14, 15, 16, 17, 19]
2.3.3 删除列表中的指定内容pop()
ls=list(range(10,20)) #生成10~19的整数做完列表元素放入列表s中
ls.pop(0) #删除列表中的指定下标的内容 输出内容: [11, 12, 13, 14, 15, 16, 17, 18, 19]
print(ls)
2.4 列表操作---改
li=['abc',123,12.52,True,"你好"]
print('修改前')
print(li)
li[0]="程序员"
print('修改后')
print(li)
直接通过下标来修改内容,这点与C相同
三、 元组操作
元组是一个不可变的序列,在创建之后不能做修改
特点
1.不可变,即元组不能进行增、删、改,只能查询
2.用()创建元组类型,数据项用逗号分隔
3.元组中的数据项可以是任何类型
4.当元组中只有一个元素时,必须在元素后加一个逗号,程序才会认为其数据类型是元组
5.支持切片操作
3.1 切片操作
tupleA=('abc',89,3.14,'123',[11,22,33])
print(type(tupleA)) #查询类型 输出<class 'tuple'>
print(len(tupleA)) #查询长度 输出 5
print(tupleA) #输出 ('abc',89,3.14,'123',[11,22,33])
print(tupleA[::-1]) #列表倒叙输出 输出内容([11, 22, 33], '123', 3.14, 89, 'abc')
#python中 tupleA[-1] 与 tupleA[4] 的含义是相同的,负号表示倒着取数据
print(tupleA[::-2]) #倒叙输出字符串,间隔两个字符取一个([11, 22, 33], 3.14, 'abc')
print(tupleA[-2:-1:]) #('123',)
需要说明的是 假如元组中有列表,那么元组中的列表是可以被修改的
#元组中的列表是可以修改的
tupleA=('abc',89,3.14,'123',[11,22,33])
tupleA[4][0]=0;
print(tupleA[4]) #输出结果 :[0, 22, 33]
当元组中只有一个元素时,必须在元素后加一个逗号,程序才会认为其数据类型是元组
#当元组中只有一个元素时,必须在元素后加一个逗号,程序才会认为其数据类型是元组
a=(1) #此时a的数据类型为整型
print(type(a)) #输出结果 int
a=(1,) #这样才是元组类型的数据 tuple
print(type(a)) #输出结果 tuple
四、 字典操作
字典由”键值对”组成的,通常使用“键”来访问数据(效率高),字典支持增、删、改、查。
1.字典不是序列类型,没有下标的概念,是一个无需的键值几个,是内置的高级数据类型
2.用{}来表示字典对象,美格键值对用逗号分隔
3.“键”必须是不可变的类型(元组、字符串),“值”可以是任何类型
4.每个键必须是唯一的,如果存在重复的“键”,那么后者会将前者覆盖
4.1 字典的创建
#创建字典
a={'name':'ZXL','age':25,'school':'ccit'}
print(type(a)) #字典类型 输出 <class 'dict'>
print(a)
4.2 添加/修改字典数据 update()
假设有一个空字典,可直接对字典进行增加、修改 ,操作如下
b={}
b['name']='周星星'
b['职业']='驱魔人'
print(b) #输出结果 :{'name': '周星星', '职业': '驱魔人'}
print(len(b)) #输出有几个数据项 2
b['name']='至尊宝' #输出结果 :{'name': '至尊宝', '职业': '驱魔人'}
print(b)
下面介绍一下 update()函数,字典的update函数 若键已存在则将键值修改 若不存在 新增键值对
b.update({'职业':'魔法师'}) #输出结果 :{'name': '至尊宝', '职业': '魔法师'}
b.update({'height':1.81}) #输出结果 :{'name': '至尊宝', '职业': '魔法师', 'height': 1.81}
print(b)
4.3 获取字典数据
4.3.1 获取字典中的所有键 keys()
b={'name': '至尊宝', '职业': '魔法师', 'height': 1.81}
print(b.keys()) #输出结果 :dict_keys(['name', '职业', 'height'])
4.3.2 获取字典中的所有值 values()
print(b.values()) #输出结果 : dict_values(['至尊宝', '魔法师', 1.81])
4.3.3 获取字典中的所有键值对 items()
print(b.items()) #输出结果 : dict_items([('name', '至尊宝'), ('职业', '魔法师'), ('height', 1.81)])
for key,value in b.items():
print('%s=%s'%(key,value))
# name = 至尊宝
# 职业 = 魔法师
# height = 1.81
4.4 字典的删除操作
#字典的删除
del b['name'] #删除字典中的name键值对
print(b) #输出结果 : {'职业': '魔法师', 'height': 1.81}
b.pop('职业') #删除字典中的‘职业’键值对
print(b) #输出结果 : {'height': 1.81}
4.5 字典排序操作 sorted()
sorted函数对所有可迭代的对象进行排序操作,使用前用确保排序的关键字数据类型一致,使用格式“sorted(a.items(),key=lambda d:d[0])”。
其中lambda是一个隐函数,是固定写法,不要写成别的单词,d只是临时起的一个名字,你可以使用任意的名字;d[0]表示元组里的第一个元素,当然第二个元素就是d[1]。所以这句命令的意思就是按照列表中第一个元素排序。
#按照key排序
a={'name':'ZXL','age':'zzz','school':'ccit','职业':'程序员','第址':'常州'}
print('排序前',end=" ")
print(a) #输出结果 排序前 {'name': 'ZXL', 'age': 25, 'school': 'ccit', '住址': '常州', '职业': '程序员'}
print('按照键值排序后',end=" ")
print(sorted(a.items(),key=lambda d:d[0]))
#输出结果 按照键值排序后 [('age', 25), ('name', 'ZXL'), ('school', 'ccit'), ('第址', '常州'), ('职业', '程序员')]
#按照value排序
a={'name':'ZXL','age':'zzz','school':'ccit','职业':'程序员','第址':'常州'}
print('按照值排序后',end=" ")
print(sorted(a.items(),key=lambda d:d[1]))
#输出结果 按照值排序后 [('name', 'ZXL'), ('school', 'ccit'), ('age', 'zzz'), ('第址', '常州'), ('职业', '程序员')]
五、数据操作的一些通用方法
5.1 字符串拼接 +
适用于 字符串、列表、元组
#数据拼接操作 +
str1='天王盖地虎,'
str2='宝塔镇河妖。'
str3=str1+str2
print('字符串1+字符串2=',end=" ")
print(str3)
list1=list(range(0,10)) #创建一个列表,列表内容为0~10
list2=list(range(10,20))#创建一个列表,列表内容为10~19
list3=list1+list2
print('列表1 + 列表2=',end=" ")
print(list3)
tuple1=('abc',123,456,'def',['abc',123,456,'def'])
tuple2=('xyz',789,654,'uvw',['xyz',789,654,'uvw'])
tuple3=tuple1+tuple2
print('元组1 + 元组2=',end=" ")
print(tuple3)
tuple3=tuple1+tuple(list3)
print('混合拼接元组1 + 列表3=',end=" ")
print(tuple3)
字符串1+字符串2= 天王盖地虎,宝塔镇河妖。
列表1 + 列表2= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
元组1 + 元组2= ('abc', 123, 456, 'def', ['abc', 123, 456, 'def'], 'xyz', 789, 654, 'uvw', ['xyz', 789, 654, 'uvw'])
混合拼接元组1 + 列表3= ('abc', 123, 456, 'def', ['abc', 123, 456, 'def'], 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
5.2 字符串复制 *
适用于 字符串、列表、元组
#数据复制操作 复制3次
str1='天王盖地虎,'
str2='宝塔镇河妖。'
list1=list(range(0,10)) #创建一个列表,列表内容为0~10
list2=list(range(10,20))#创建一个列表,列表内容为10~19
tuple1=('abc',123,456,'def',['abc',123,456,'def'])
tuple2=('xyz',789,654,'uvw',['xyz',789,654,'uvw'])
print(str1*3)
print(str2*3)
print(list1*3)
print(list2*3)
print(tuple1*3)
print(tuple2*3)
# 天王盖地虎,天王盖地虎,天王盖地虎,
# 宝塔镇河妖。宝塔镇河妖。宝塔镇河妖。
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
# ('abc', 123, 456, 'def', ['abc', 123, 456, 'def'], 'abc', 123, 456, 'def', ['abc', 123, 456, 'def'], 'abc', 123, 456, 'def', ['abc', 123, 456, 'def'])
# ('xyz', 789, 654, 'uvw', ['xyz', 789, 654, 'uvw'], 'xyz', 789, 654, 'uvw', ['xyz', 789, 654, 'uvw'], 'xyz', 789, 654, 'uvw', ['xyz', 789, 654, 'uvw'])
5.3 对象是否存在 in
str1='天王盖地虎,'
list1=list(range(0,10)) #创建一个列表,列表内容为0~10
tuple1=('abc',123,456,'def',['abc',123,456,'def'])
a={'name':'ZXL','age':'zzz','school':'ccit','职业':'程序员','第址':'常州'}
print('天' in str1)#True
print('天' in list1)#False
print('天' in tuple1)#False
print('name' in a) #True #字典使用in查询的是“键”