数据类型的内置方法介绍(补充)
列表的内置方法
1.统计列表中数据值的个数 len()
l = [1, 2, 3, 2, 3, 4, 54, 5]
print(len(l))
输出结果: 8
2.统计某个数据值出现次数
l = [1, 2, 3, 2, 3, 4, 54, 5]
print(l.count(2))
输出结果: 2
3.增加数据值 append()/insert()
在结尾添加一个数据值 append()
- 括号内无论什么数据类型,都会被当作一个数据值添加。
l = [1, 2, 3, 2, 3, 4, 54, 5]
l1 = l.append(1)
print(l)
l = [1, 2, 3, 2, 3, 4, 54, 5]
l1 = l.append('哈哈哈')
print(l)
l = [1, 2, 3, 2, 3, 4, 54, 5]
l1 = l.append([1, 2, 323])
print(l)
输出结果:
在任意位置添加一个数据值 insert()
- 括号内无论什么数据类型,都会被当作一个数据值插入。
- 小括号第一个数字代表位置
l = [1, 2, 3, 2, 3, 4, 54, 5]
l1 = l.insert(3, 1)
print(l)
= [1, 2, 3, 2, 3, 4, 54, 5]
l1 = l.insert(3, '哈哈哈')
print(l)
l = [1, 2, 3, 2, 3, 4, 54, 5]
l1 = l.insert(4, [1, 2, 323])
print(l)
输出结果:
列表的扩展(合并成一个列表)
方式1
l = [1, 2, 3, 2, 3, 4, 54, 5]
l1 = [1, 3333]
for i in l1:
l.append(i)
print(l) # 在列表l后面扩展l1
输出结果:
方式2
l = [1, 2, 3, 2, 3, 4, 54, 5]
l1 = [1, 3333]
print(l + l1) # 其实就是拼接的方式
输出结果:
方式3
l = [1, 2, 3, 2, 3, 4, 54, 5]
l1 = [1, 3333]
l.extend(l1)
print(l) # 在列表l后扩展l1列表
输出结果:
4.删除数据值
通过索引删除 del
l = [1, 2, 3, 2, 3, 4, 54, 5]
del l[0]
print(l)
输出结果:
指定对象删除 remove()
- 直接删除没有了
l = [1, 2, 3, 2, 3, 4, 54, 5]
l1 = l.remove(54) # 指定列表内的数据值54
print(l, l1) # l1输出为none表示数据值直接没有了
输出结果:
取出数据值后再进行删除 pop()
- 默认取出列表尾部数据值,然后处理一下在进行删除
l = [1, 2, 3, 2, 3, 4, 54, 5]
l1 = l.pop()
print(l, l1)
l1 = l.pop(0)
print(l1, l)
输出结果:
5.查找数据值
print(l) # 取列表所有值
print(l[3]) # 取列表第四个值
print(l[1:3]) # 取列表第二个到第四个值
输出结果:
6.修改数据值
l = [1, 2, 3, 2, 3, 4, 54, 5]
l[0] = 100 #将列表第一个值修改为100
print(l)
输出结果:
7.数据值排序 sort()
- 1.升序
l = [1, 2, 3, 2, 3, 4, 54, 5]
l.sort() # 升序
print(l)
输出结果:
- 2.降序
l = [1, 2, 3, 2, 3, 4, 54, 5]
l.sort(reverse=True) # 降序
print(l)
输出结果:
8.翻转数据值
l = [1, 2, 3, 2, 3, 4, 54, 5]
l.reverse() # 前后颠倒
print(l)
输出结果:
9.数据值比较运算
- 按照位置一一进行比较
l0 = [3, 2, 3, 4, 54, 5]
l1 = [4, 5, 7]
l2 = ['tom', 2]
l3 = ['a', 1]
l4 = ['A', 4]
l5 = ['你', 5]
l6 = ['我', 3]
print(l0 > l1)
print(l3 > l4) # 字符编码知识
print(l5 > l6) # 字符编码知识
print(l1 > l2) # 不同类型默认不能比对会报错
输出结果:
- 报错的为不同类型的比对,其他比对依次往下
元组的内置方法
- 类型转换:支持for循环的数据类型都可以转元组。
- 当元组内只有一个数据值的时候,逗号不能省略,必须写出来。
- 一个数据值的元组,省略了逗号,括号里面是什么数据类型就是什么数据类型。
1.索引
- 元组的索引不能改变绑定的地址
2.统计元组内数据值的个数
t1 = (11, 22, 33, 44, 55, 66)
print(len(t1))
输出结果: 6
3.查看与修改
t1 = (11, 22, 33, 44, 55, 66)
print(t1[0]) # t1[0]的值不可以修改,修改输出直接报错
输出结果: 11
字典的内置方法
- 字典很少涉及到类型转换,都是直接定义使用
- k对v的描述信息不能为不可变类型,一般都是字符串
- 字典内k:v键值对是无序的
1.取值操作
info = {
'username': 'tom',
'pwd': 110,
'hobby': ['sleep', 'eat']
}
print(info['username'])
* 当键不存在时会报错,所以一般不推荐使用
输出结果: tom
info = {
'username': 'tom',
'pwd': 110,
'hobby': ['sleep', 'eat']
}
print(info.get('username')) # tom
print(info.get('xxx')) # None
print(info.get('username', )) # tom
print(info.get('xxx', )) # 键不存在返回的值 默认返回None
print(info.get('xxx', 123)) # 123
print(info.get('xxx')) # None
.get() 函数返回指定键的值
输出结果:
2.统计字典中键值对的个数
info = {
'username': 'tom',
'pwd': 110,
'hobby': ['sleep', 'eat']
}
print(len(info))
输出结果: 3
3.修改/增加数据
- 当键存在时就是修改数据,不存在就是增加数据。
info = {
'username': 'tom',
'pwd': 110,
'hobby': ['sleep', 'eat']
}
info['username'] = 'ami' #username存在
print(info)
输出结果:
info = {
'username': 'tom',
'pwd': 110,
'hobby': ['sleep', 'eat']
}
info['username1'] = 'ami' #username1不存在
print(info)
输出结果:
4.删除数据
方式1 del
info = {
'username': 'tom',
'pwd': 110,
'hobby': ['sleep', 'eat']
}
del info['username']
print(info)
输出结果:
方式2 pop()
info = {
'username': 'tom',
'pwd': 110,
'hobby': ['sleep', 'eat']
}
item = info.pop('username')
print(info, item)
输出结果:
方式3 随机删除 有优化
info = {
'username': 'tom',
'pwd': 110,
'hobby': ['sleep', 'eat']
}
info.popitem()
print(info)
输出结果:
5.快速获取(键/值/键值)对数据
info = {
'username': 'tom',
'pwd': 110,
'hobby': ['sleep', 'eat']
}
print(info.keys()) # 获取字典所有的k值
print(info.values()) # 获取字典所有的v值
print(info.items()) # 获取字典kv键值对数据
输出结果:
6.修改字典数据
- 键存在就是修改字典数据,键不存在就是新增字典数据。
info = {
'username': 'tom',
'pwd': 110,
'hobby': ['sleep', 'eat']
}
info.update({'username':'jason123'})
print(info)
info.update({'xxx':'jason123'})
print(info)
输出结果:
7.快速构造字典
- 给的值默认情况下所有的键都用一个。 输入:
info = {
'username': 'jason',
'pwd': 123,
'hobby': ['read', 'run']
}
res = dict.fromkeys([1, 2, 3], None)
print(res)
new_dict = dict.fromkeys(['name', 'pwd', 'hobby'], [])
new_dict['name'] = []
new_dict['name'].append(123)
new_dict['pwd'].append(123)
new_dict['hobby'].append('read')
print(new_dict)
输出结果:
8.键存在与不存在获取的值
- 键存在则获取键对应的值,键不存在则设置,并返回设置的新值。 输入:
info = {
'username': 'jason',
'pwd': 123,
'hobby': ['read', 'run']
}
res = info.setdefault('username', 'jasonNB')
print(res, info)
res1 = info.setdefault('xxx', 'jasonNB')
print(res1, info)
输出结果:
集合的内置方法
- 支持for循环的,并且数据必须是不可变类型
- 定义空集合需要使用关键字才可以
1.去重
输入:
s1 = {1, 2, 12, 3, 2, 3, 2, 3, 2, 3, 4, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4}
print(s1) # {1, 2, 3, 4, 5, 12}
输出类型:
输入:
l1 = ['jason', 'jason', 'tony', 'oscar', 'tony', 'oscar', 'jason']
s2 = set(l1)
l1 = list(s2)
print(l1)
输出结果:
2.关系运算
print(s1)
l1 = ['jason', 'jason', 'tony', 'oscar', 'tony', 'oscar', 'jason']
s2 = set(l1)
l1 = list(s2)
print(l1)
输出结果:
3.集合的交并补
模拟共同好友
- 1.有共同好友
f1 = {'jason', 'tony', 'oscar', 'jerry'}
f2 = {'kevin', 'jerry', 'jason', 'lili'}
print(f1 & f2)
输出结果:
- 2.各自拥有的不重复好友
f1 = {'jason', 'tony', 'oscar', 'jerry'}
f2 = {'kevin', 'jerry', 'jason', 'lili'}
print(f1 - f2)
print(f2 - f1)
输出结果:
- 3.二人所有的好友
f1 = {'jason', 'tony', 'oscar', 'jerry'}
f2 = {'kevin', 'jerry', 'jason', 'lili'}
print(f1 | f2)
输出结果:
- 4.二人独自好友的集合
f1 = {'jason', 'tony', 'oscar', 'jerry'}
f2 = {'kevin', 'jerry', 'jason', 'lili'}
print(f1 ^ f2)
输出结果:
可变与不可变类型
1.可变类型 list
- 值改变,内存地址不改变
l1 = [11, 22, 33]
print(id(l1))
l1.append(44)
print(id(l1))
输出结果:
2.不可变类型 str int float
- 值改变,内存地址也改变
s1 = '$hello$'
print(id(s1))
s1 = s1.strip('$')
print(id(s1))
输出结果:
小练习
1.利用列表编写一个员工姓名管理系统
输入1执行添加用户名功能
输入2执行查看所有用户名功能
输入3执行删除指定用户名功能
ps:思考如何让程序循环起来并且可以根据不同指令执行不同操作
提示: 循环结构 + 分支结构
拔高: 是否可以换成字典或者数据的嵌套使用完成更加完善的员工管理而不是简简单单的一个用户名(能写就写 不会没有关系)
代码输入:
输出结果:
2.去重下列列表并保留数据值原来的顺序
eg: [1,2,3,2,1] 去重之后 [1,2,3]
l1 = [2,3,2,1,2,3,2,3,4,3,4,3,2,3,5,6,5]
代码输入:
l1 = [2, 3, 2, 1, 2, 3, 2, 3, 4, 3, 4, 3, 2, 3, 5, 6, 5]
l = [] # 定义一个空列表
for i in l1: # for循环取值
if i not in l: # 对i进行判断,如果i不在空列表l内
l.append(i) # i不在l内就添加一个i值进去
print(l)
测试结果:
3.有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
pythons={'jason','oscar','kevin','ricky','gangdan','biubiu'}
linuxs={'kermit','tony','gangdan'}
1. 求出即报名python又报名linux课程的学员名字集合
2. 求出所有报名的学生名字集合
3. 求出只报名python课程的学员名字
4. 求出没有同时这两门课程的学员名字集合
代码输入:
pythons = {'jason', 'oscar', 'kevin', 'ricky', 'gangdan', 'biubiu'}
linuxs = {'kermit', 'tony', 'gangdan'}
print(pythons & linuxs) # 两项都报的(共同)
print(pythons | linuxs) # 所有报名的(所有)
print(pythons - linuxs) # 只报python(linux中没有出现的python)
print(pythons ^ linuxs) # 只报了一门的(没有两项都报的)
运行结果: