序列类型
定义:在python中,序列就是一组按照顺序排序的值【数据集合】
python内置的序列类型:
- 字符串
- 列表
- 元组
特点:支持索引、切片操作
索引:正负表示方向,从0开始
切片:截取字符串的部分内容,[start : end : step]
- start:起点下标
- end:终点下标
- step:步长,默认为1
字符串
不可变数据类型
定义
定义:
1
2str = 'hello world'
print(type(str))运行结果:
获取下标对应内容:
1
print(str[0])
运行结果:
遍历:
1
2for i in str:
print(i, end=' ') # end=' '的作用是:不换行输出运行结果:
常用方法
获取字符串长度:
1
2str = 'I Love Python'
print(len(str))运行结果:
首字母变大写:
1
2name = 'bob'
print(name.capitalize())运行结果:
使用占位符输出:
1
print('首字母大写后:%s' % name.capitalize()) #会使用format亦可
运行结果:
去除前后空格:
1
2str = ' hello world '
print(str.strip())运行结果:
去除字符串左(右)边的空格:
1
print(str.lstrip()) #去除左边的空格,右边同理
运行结果:
注意:该方法仅能将字符串前后的空格去除,中间空格无效果。
复制字符串:
1
2
3a = 'Bob'
b = a
print(b)运行结果:
查看内存地址:
1
2print(id(a))
print(id(b))运行结果:
上图内存地址相同说明前面的
=
为复制操作。查找操作:
1
2str = 'I Love Python'
print(str.find('o'))运行结果:
注意:
- 该方法仅能返回该字符出现的第一个位置,若查询不到返回 -1
- 使用 index() 方法也可以获取字符下标,区别是index找不到下标时会报错
判断是否以*开头/结尾:
1
2str = 'I Love Python'
print(str.startswith('I')) #开始运行结果:
转换大/小写:
1
2
3str = 'I Love Python'
print(str.upper()) #大写
print(str.lower()) #小写运行结果:
切片操作
输出 2-5 之间的字符串:
1
2str = 'I Love Python'
print(str[2:5])运行结果:
从 2 开始到最后:
1
2str = 'I Love Python'
print(str[2:])运行结果:
注意:开始(0)、结束可省略不写。
倒序输出:
1
2str = 'I Love Python'
print(str[::-1])运行结果:
列表
定义
定义:
1
2list = []
print(type(list))运行结果:
特点:
- 支持增删查改
- 列表中的数据可变化(内存地址不会改变)
- 使用[]来表示列表类型,数据项(任何类型的数据)之间用逗号分隔
- 支持索引和切片操作
常用方法
列表长度:
1
2list = [1, 2, 3, 4]
print(len(list))运行结果:
查找:
输出第一项:
1
2list = [1, 2, 3, 4]
print(list[0])运行结果:
输出第二个及以后的项:
1
2list = [1, 2, 3, 4]
print(list[1:]) #切片操作运行结果:
倒序输出列表项:
1
2list = [1, 2, 3, 4]
print(list[::-1])运行结果:
多次输出:
1
2list = [1, 2, 3, 4]
print(list * 3)运行结果:
范围内查找(index):
1
2listA = ['nihao', 1, 0.2, True]
print(listA.index(0.2, 0, 3)) #返回该数据在列表中的下标,若不存在会报错运行结果:
注意:index方法中三个参数分别是 查询的内容、起始下标、终止下标。
增加:
使用
append
追加:1
2
3list = [1, 2, 3, 4]
list.append('nihao')
print('追加后:', list)运行结果:
注意:无论追加什么类型的数据,只占一个位置。
使用
insert
插入:1
2
3list = [1, 2, 3, 4]
list.insert(1, 'aaa')
print(list)运行结果:
注意:
- insert方法有两个参数,分别为要插入的位置和数据项
- 上面提到的两种增加数据的方法均只能插入一个数据项
批量增加
extend
:1
2
3
4list = [1, 2, 3, 4]
Range = list(range(10)) # 将range容器强转为list类型
listA.extend(Range)
print(listA)运行结果:
注意:extend方法的作用是将两个list中的数据合并为一个list,所以下面的代码亦能实现该操作:
1
2
3list = [1, 2, 3, 4]
listA.extend([0,1,2,3,4,5,6,7,8,9])
print(listA)
修改:
通过下标操作:
1
2
3list = [1, 2, 3, 4]
listA[0] = 'enen'
print(listA)运行结果:
删除:
删除单个数据(del关键字+下标实现):
1
2
3list = [1, 2, 3, 4]
del listA[0]
print(listA)运行结果:
注意:这种删除方法适用于删除单个数据项。
批量删除数据(切片操作实现):
1
2
3list = [1, 2, 3, 4]
del listA[1:2]
print(listA)运行结果:
移除指定的数据(remove):
1
2
3listA = ['nihao', 1, 0.2, True]
listA.remove(0.2)
print(listA)运行结果:
移除指定下标的数据(pop):
1
2
3listA = ['nihao', 1, 0.2, True]
listA.pop(1)
print(listA)运行结果:
注意:要区分
remove
和pop
的区别- remove:移除指定内容的数据项
- pop:移除指定下标的数据项
元组
是一种不可变的序列,创建之后不能做任何修改
定义
定义:
1
2tupleA = (1, 2.001, True, ['nihao', 'python'])
print(tupleA)运行结果:
特点:
创建后数据值不能修改
使用 ( ) 来定义一个元组,数据之间使用逗号分隔
元组中的数据可以是任意类型的数据
当元组中只有一个数据时要加上逗号,否则解释器会当做整型来处理
支持切片操作
查询
下标:
1
2tupleA = (1, 2.001, True, ['nihao', 'python'])
print(tupleA[3])运行结果:
循环遍历:
1
2
3tupleA = (1, 2.001, True, ['nihao', 'python'])
for i in tupleA:
print(i,end=' ')运行结果:
切片操作:
切片正序输出:
1
2tupleA = (1, 2.001, True, ['nihao', 'python'])
print(tupleA[::])运行结果:
切片倒序输出:
1
2tupleA = (1, 2.001, True, ['nihao', 'python'])
print(tupleA[::-1])运行结果:
易错:
步长:
1
2tupleA = (1, 2.001, True, ['nihao', 'python'])
print(tupleA[::-2]) #步长为2,隔一个取一个运行结果:
切片方向:
1
2tupleA = (1, 2.001, True, ['nihao', 'python'])
print(tupleA[-2:-1:]) #从左向右,从-2位置到-1位置连续取运行结果:
注意:根据上图可知,当元组只有一个数据时要添加一个逗号避免被解释器当做整型
验证元组不可变:
1
2
3
4tupleA = ()
print(id(tupleA))
tupleA = ('nihao',)
print(id(tupleA))运行结果:
注意:据上图可知,相同名称的元组再次被赋值后内存地址会发生改变,以此可验证元组数据不可修改的特性
注意
尽管元组数据不能修改但元组中列表的数据可修改
1
2
3tupleA = (1, 2.001, True, ['nihao', 'python'])
tupleA[3][0] = 'haha'
print(tupleA)运行结果:
强制类型转换
1
2tupleC=tuple(range(10))
print(type(tupleC))运行结果:
统计数据出现的次数:
1
2tupleC=tuple(range(10))
print(tupleC.count(1))运行结果:
字典
python中重要的数据类型,以键值对形式创建并用大括号包裹
定义
定义:
1
2dictA = {}
print(type(dictA))运行结果:
特点:
- 不属于序列类型(无序),没有下标概念
- 用{}来表示字典对象,键值对之间使用逗号分隔
- 键是不可变的的类型(元组、字符串),值可以是任意类型
- 键要唯一,否则后者覆盖前者
操作
增加:
1
2
3dictA = {}
dictA['name'] = '菜徐坤'
print(dictA)运行结果:
查询:
查询值:
1
2
3dictA = {}
dictA['name'] = '菜徐坤'
print(dictA['name'])运行结果:
查询所有的键:
1
2dictA = {'name': '菜徐坤', 'age': 30, 'school': '北京电影学院'}
print(dictA.keys())运行结果:
查询所有的值:
1
2dictA = {'name': '菜徐坤', 'age': 30, 'school': '北京电影学院'}
print(dictA.values())运行结果:
查询所有的键值对:
1
2dictA = {'name': '菜徐坤', 'age': 30, 'school': '北京电影学院'}
print(dictA.items())运行结果:
遍历字典:
1
2
3
4
5dictA = {'name': '菜徐坤', 'age': 30, 'school': '北京电影学院'}
for key,values in dictA.items(): #第一种遍历方法
print('{}:{}'.format(key,values))
#for item in dictA.items(): #第二种遍历方法
# print(item, end=' ')运行结果:
修改:
1
2
3
4
5dictA = {}
dictA['name'] = '菜徐坤'
print(dictA)
dictA['name'] = '肖战'
print(dictA)运行结果:
删除:
del关键字:
1
2
3dictA = {'name': '菜徐坤', 'age': 30, 'school': '北京电影学院'}
del dictA['name']
print(dictA)运行结果:
pop方法:
1
2
3dictA = {'name': '菜徐坤', 'age': 30, 'school': '北京电影学院'}
dictA.pop('name')
print(dictA)运行结果:
公用方法
合并(+)
使用于字符串、列表、元组
字符串:
1
2
3strA = 'hello '
strB = 'python'
print(strA + strB)运行结果:
列表:
1
2
3listA = ['hello']
listB = ['python']
print(listA + listB)运行结果:
元组:
1
2
3tupleA = ('hello',)
tupleB = ('python',)
print(tupleA + tupleB)运行结果:
复制(*)
适用于字符串、列表、元组
字符串:
1
2strB = 'python'
print(strB * 3)运行结果:
列表:
1
2listB = ['python']
print(listB * 3)运行结果:
元组:
1
2tupleB = ('python',)
print(tupleB * 3)运行结果:
判断(in)
适用于字符串、列表、元组、字典
1 | strA='hello python' |
运行结果:
注意:
- 返回值为 Bool 类型
- 当字典类型的数据使用 in 做判断时,通常判断的是 key 而不是 value