04_Python列表

博客介绍了序列和列表相关知识。序列成员有序,可通过下标访问,包括字符串、列表和元组类型。列表部分涵盖定义、索引切片、反转、操作及常用函数,还补充了深拷贝和浅拷贝。最后有用户管理相关练习。

一、序列

1、成员有序排列的,且可以通过下标偏移量访问到它的一个或者几个成员,这类类型统称为序列。
2、序列数据类型包括:字符串,列表,和元组类型。
3、特点: 成员关系操作符, 连接操作符, 重复操作符, 索引与切片操作符

二、列表

1、定义
service = ['http','ssh','ftp','dns']
2、索引和切片
service[0]   #列表第一个
service[-1]  #列表倒数第一个
service[1:]   #2到最后
service[:-1]  #除了最后一个

3、反转
service[::-1] #倒序

在这里插入图片描述

4、操作列表

(1)基本操作
1)len()

2)" + "连接两个序列

service1 = ['mysql','firewalld']

3)" * "重复序列元素

service * 2
  1. in
'mysql' in service
'mysql' in service1

在这里插入图片描述

(2)修改列表元素
在这里插入图片描述

5、常用的列表函数

在这里插入图片描述

1.append 、 extend 、insert

append:追加,追加一个元素到列表中
extend:拉伸 追加多个元素到列表中
insert:在指定索引位置插入元素

在这里插入图片描述
2.remove 、 pop 、del list

remove:删除指定的元素
pop:将删除的元素作为结果返回
del list :从内存中删除列表

在这里插入图片描述

3.count 、index
count:查看元素出现的次数
index:查看指定元素的索引值(可以指定索引范围查看)
在这里插入图片描述
4.sort 、copy
sort:排序,默认ASCII码排序
在这里插入图片描述

补充:深拷贝和浅拷贝"""

***面试常问:请简述赋值, 深拷贝和浅拷贝的区别?(python中如何拷贝一个对象?)

- 直接赋值(li1 = li): 只传递对象的引用, li1指向对象li的内存地址空间,
    因此, 原有列表li改变, 被赋值的li1也会做相应的改变.

- 浅拷贝(三种实现方式 eg: li2=li.copy()):li和li2的内存地址不同,
    但是子对象的内存地址相同, 因此,原始数据改变 , 子对象也改变.

- 深拷贝(import copy, eg: li3=copy.deepcopy(li)), li和li3的内存地址不同,
         包含子对象的拷贝, 所以原始对象改变并不会造成深拷贝里面任何子项的改变.

*** 当深拷贝和浅拷贝, 针对的对象全部是不可变数据类型时, 两者效果相同;
*** 当深拷贝和浅拷贝, 针对的对象包含是可变数据类型时, 两者才有上述区别;

问题:  深拷贝和浅拷贝的区别?/python中如何拷贝一个对象?
赋值: 创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。(=)
浅拷贝: 对另外一个变量的内存地址的拷贝,这两个变量指向同一个内存地址的变量值。(li.copy(), copy.copy())
公用一个值;
这两个变量的内存地址一样;
对其中一个变量的值改变,另外一个变量的值也会改变;
深拷贝: 一个变量对另外一个变量的值拷贝。(copy.deepcopy())
两个变量的内存地址不同;
两个变量各有自己的值,且互不影响;
对其任意一个变量的值的改变不会影响另外一个;

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

三、练习

用户管理

"""
1.系统里面有多个用户,用户的信息目前保存在列表里面
    users = ['root','westos']
    passwd = ['123','456']
2.用户登陆(判断用户登陆是否成功
    1).判断用户是否存在
    2).如果存在
        1).判断用户密码是否正确
        如果正确,登陆成功,推出循环
        如果密码不正确,重新登陆,总共有三次机会登陆
    3).如果用户不存在
    重新登陆,总共有三次机会
"""
users = ['root', 'westos']
passwords = ['123', '456']

# 尝试登录次数
count = 0

while count < 3:
    inuser = input('用户名: ')
    inpassword = input('密码: ')

    count += 1

    if inuser in users:
        index = users.index(inuser)
        password = passwords[index]

        if inpassword == password:
            print('%s登录成功' % (inuser))
            break
        else:
            print('%s登录失败 : 密码错误' % inuser)
    else:
        print('用户%s不存在' % inuser)
else:
    print('尝试超过三次,请稍后重试')

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值