(列表,字典,元组,集合)的内置方法

今日内容

列表的内置方法

注意:列表内置方法之后产生的不是新的值,而是修改的本身

  • 取值
l1 = [11, 22, 33, 44, 55, 66]
print(l1[0])  # 11
print(l1[-1])  # 66 负号控制方向
 切片取值:
l1 = [11, 22, 33, 44, 55, 66]
print(l1[0:4])  # [11, 22, 33, 44]
print(l1[-3:-1])  # [44, 55]
print(l1[0:4:2])  # [11, 33] 第三个数2代表的是间隔取值数

重要掌握的内置方法

  • .append

      在列表的尾部增加一个数据值,注意这里你加入的数据值是以一个数据值加在尾部的
    

eg:

l1 = [11, 22, 33, 44, 55, 66]
l1.append([1, 2, 3])
print(l1)  # 输出结果:[11, 22, 33, 44, 55, 66, [1, 2, 3]]

你加的值是以单个数据值加入的

  • .insert

      在任意位置增加一个数据值
    

eg:

l1 = [11, 22, 33, 44, 55, 66]
l1.insert(0, 45)  # 0代表的是位置,45代表的是增加数据值
print(l1)  # 输出结果:[45, 11, 22, 33, 44, 55, 66]
l1.insert(0, [1, 2, 3])
print(l1)  # 输出结果:[[1, 2, 3], 11, 22, 33, 44, 55, 66]

这种增加方式也是以单个数据值增加的

  • .extent

      也是增加元素的内置方法,但是这里与上面两种不同的区别就是,extent可以加入数据值的时候,会以数据值里的单个元素,分别加入到列表。
    

eg:

l1 = [11, 22, 33, 44, 55, 66]
l1.extend([1, 2, 3])
print(l1)  # 输出结果:[11, 22, 33, 44, 55, 66, 1, 2, 3]

这种方法是加到末尾的

extent方法也可以理解成是for + append

eg:

l2 = [1, 2, 3]
l1 = [11, 22, 33, 44, 55, 66]
for i in l1:
    l2.append(i)  # 在l2中加i的值
print(l2)  # 输出结果:[1, 2, 3, 11, 22, 33, 44, 55, 66]
  • del

      根据索引值删除元素
    

eg:

l1 = [11, 22, 33, 44, 55, 66]
del l1[0]  # 根据索引值删除
print(l1)  # 输出结果:[22, 33, 44, 55, 66]
  • .pop

     也是删除元素,并且删除的数据还可以被使用一下
    

eg:

l1 = [11, 22, 33, 44, 55, 66]
l1.pop(2)  # 根据索引值删除
print(l1)  # 输出结果:[11, 22, 44, 55, 66]

当我们不给索引值的时候,是默认删除末尾的数据值

eg:

l1 = [11, 22, 33, 44, 55, 66]
l1.pop()  # 不给索引值,默认删除末尾值
print(l1)  # 输出结果:[11, 22, 33, 44, 55]
  • .remove

      指名删除
    

eg:

l1 = [11, 22, 33, 44, 55, 66]
l1.remove(22)  # 指明删除22
print(l1)  # 输出结果:[11, 33, 44, 55, 66]

了解的内置方法

  • .count

      统计某个数据出现的次数
    

eg:

l1 = [11, 33, 44, 11, 55, 22, 33, 44, 55, 66]
print(l1.count(33))  # 输出结果:2
  • .reverse

      反转的意思,就是180°翻转
    

eg:

l1 = [11, 33, 44, 11, 55, 22, 33, 44, 55, 66]
l1.reverse()
print(l1)  # 输出结果:[66, 55, 44, 33, 22, 55, 11, 44, 33, 11]
  • .sort

      从低到高依次排序
    

eg:

l1 = [11, 33, 44, 11, 55, 22, 33, 44, 55, 66]
l1.sort()
print(l1)  # 输出结果:[11, 11, 22, 33, 33, 44, 44, 55, 55, 66]

对应,也会有升序的排列

eg:

l1 = [11, 33, 44, 11, 55, 22, 33, 44, 55, 66]
l1.sort(reverse=True)  # 升序
print(l1)  # 输出结果:[66, 55, 55, 44, 44, 33, 33, 22, 11, 11]
  • .index

      查找某个数据值所在的索引值
    

eg:

l1 = [11, 33, 44, 11, 55, 22, 33, 44, 55, 66]
print(l1.index(33))  # 输出结果:1

元组的内置方法

  • 类型转换

能被for循环支持的数据类型都可以转换成元组

print(tuple('123'))  # ('1', '2', '3')
print(tuple([[1, 2], 3, 4, 5]))  # ([1, 2], 3, 4, 5)
print(tuple('hello'))  # ('h', 'e', 'l', 'l', 'o')

关于元组有一个情况需要注意

当元组里只有一个数据值的时候会,我们一定要在数据值后面加一个逗号,否则,括号里是什么数据类型就是什么数据类型。

举例说明:

eg:

l1 = (1)
print(type(l1))  # 输出结果:<class 'int'>
l1 = (1,)  # 这里就加了一个逗号,数据类型就发生了变化
print(type(l1))  # 输出结果:<class 'tuple'>
  • 索引取值

eg:

l1 = (1,2,3,4,5)
print(l1[1])  # 输出结果:2
  • 统计元组内数据值的个数

eg:

l1 = (1, 2, 3, 4, 5)
print(len(l1))  # 输出结果:5

元组是不能改的

元组的索引是不会改变绑定的地址

当元组里有别的数据类型的时候:

eg:

l1 = (1, 2, 3, 4, 5, [11, 22, 33, 44, 55, 66])
l1[-1][3] = 666  # 这里我们找的值是列表的值
print(l1)  # 输出结果:(1, 2, 3, 4, 5, [11, 22, 33, 666, 55, 66])

字典的内置方法

其实字典很少用到数据类型的转换

字典中K值一般为字符串,只要为不可变数据类型就ok

字典中,K:V键值对是无序的
  • 取值

eg:

l1 = {'name': 'jason', 'pwd': 123, 'hobby': 'read'}
print(l1.get('name'))  # 输出结果:jason

建议大家使用这种方法,减少报错。

  • 修改数据

eg:

l1 = {'name': 'jason', 'pwd': 123, 'hobby': 'read'}
l1['name'] = 'kevin'  # 修改K值对应的V值
print(l1)  # 输出结果:{'name': 'kevin', 'pwd': 123, 'hobby': 'read'}

健在则为修改

  • 新增数据

eg:

l1 = {'name': 'jason', 'pwd': 123, 'hobby': 'read'}
l1['age'] = 21
print(l1)  # 输出结果:{'name': 'jason', 'pwd': 123, 'hobby': 'read', 'age': 21}

健不在则为新增

  • 删除数据

.pop

eg:

l1 = {'name': 'jason', 'pwd': 123, 'hobby': 'read'}
l1.pop('name')
print(l1)  # 输出结果:{'pwd': 123, 'hobby': 'read'}
res = l1.pop('name')
print(res)  # jason

del

eg:

l1 = {'name': 'jason', 'pwd': 123, 'hobby': 'read'}
del l1['name']  # 删除对应的V值
print(l1)  # 输出结果:{'pwd': 123, 'hobby': 'read'}

.popitem

	随机删除

eg:

l1 = {'name': 'jason', 'pwd': 123, 'hobby': 'read'}
l1.popitem()
print(l1)  # {'name': 'jason', 'pwd': 123}
  • 修改数据

.update

健在为修改,健不在则为新增

eg:

l1 = {'name': 'jason', 'pwd': 123, 'hobby': 'read'}
l1.update({'name': 'kevin'})  # 健在为修改
print(l1)  # {'name': 'kevin', 'pwd': 123, 'hobby': 'read'}

eg2:

l1 = {'name': 'jason', 'pwd': 123, 'hobby': 'read'}
l1.update({'name2': 'kevin'})  # 健不在则为新增
print(l1)  # {'name': 'jason', 'pwd': 123, 'hobby': 'read', 'name2': 'kevin'}
  • 快速构造字典

      关键字:fromkeys
    

eg:

l1 = {'name': 'jason', 'pwd': 123, 'hobby': 'read'}
res = l1.fromkeys([1, 2, 3], 2344453454546)
print(res)  # {1: 2344453454546, 2: 2344453454546, 3: 2344453454546}
  • 快速获取键值对

K值
eg:

l1 = {'name': 'jason', 'pwd': 123, 'hobby': 'read'}
res = l1.keys()
print(res)  # dict_keys(['name', 'pwd', 'hobby'])

V值
eg:

l1 = {'name': 'jason', 'pwd': 123, 'hobby': 'read'}
res = l1.values()
print(res)  # dict_values(['jason', 123, 'read'])

集合的内置转换

  • 数据转换

能被for循环支持的数据类型都可以转换为集合

  • 去重

eg:

l1 = {1, 2, 3, 3, 4, 3, 2, 3, 4, 1, 3, 4, 3, 4, 5, 5}
print(l1)  # 输出结果:{1, 2, 3, 4, 5}
  • 关系运算

print({1, 2, {'name': 'jason'}})报错

模拟qq共同好友的情况

有两组数据:

pythons = {'jason', 'oscar', 'kevin', 'ricky', 'gangdan', 'biubiu'}
linuxs = {'kermit', 'tony', 'gangdan'}
print(pythons & linuxs)  # 两个的共同好友
print(pythons | linuxs)  # 所有的名字
print(pythons - linuxs)  # 第一组数据独有的名字
print(pythons ^ linuxs)  # 在两组数据中没有同时出现的数据

不可变类型和可变类型

不可变类型可变类型
字符串,整型,浮点型,元组字典,列表,集合
值改变,内存地址也改变值改变,内存地址不改变

今日作业

作业一

1.利用列表编写一个员工姓名管理系统
输入1执行添加用户名功能
输入2执行查看所有用户名功能
输入3执行删除指定用户名功能
ps:思考如何让程序循环起来并且可以根据不同指令执行不同操作
提示: 循环结构 + 分支结构
拔高: 是否可以换成字典或者数据的嵌套使用完成更加完善的员工管理而不是简简单单的一个用户名 (能写就写 不会没有关系)

l1 = ['jason|123', 'kevin|321', 'tony|234']
while True:
    username = input('请输入你的登录用户名:').strip()  # 输入然后去除首尾的空格
    password = input('请输入你的密码:').strip()
    for date in l1:  # for循环data在l1里取值
        name, pwd = date.split('|')  # 以|为标识间隔开,为列表
        if username.lower() == name and password == pwd:
            print('登录成功')
            break
    else:
        print('用户名或密码错误')
        continue
    while True:
        order = input('请输入你的指令:')
        if order == '1':
            i = input('请输入你需要添加的员工信息:')
            l1.append(i)  # 在l1里新增一个i值
            print(i)
            continue
        elif order == '2':
            print(l1)
            continue
        elif order == '3':
            i = input('请输入你要辞退的员工信息:')
            l1.remove(i)  # 在l1里删除i值
            print(i)
            continue
        else:
            res = input('其他指令为退出,是否退出?(y/q)')
            if res == 'y':
                print('不小心输错了')
                continue
            else:
                print('退出成功')
            break
    break

作业二

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]

k = []  # 我们先设置一个空列表
l1 = [2, 3, 2, 1, 2, 3, 2, 3, 4, 3, 4, 3, 2, 3, 5, 6, 5]
for i in l1:  # for循环取值
    if i not in k:  # 判断,如果i不在k列表里面,则进行下一步
        k.append(i)  # 如果i不在k列表里面就增加进去
print(k)

作业三

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)  # 第一组数据独有的名字
print(pythons ^ linuxs)  # 在两组数据中没有同时出现的数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值