列表与元组

一、列表
1.序列
1.成员有序排列的,且可以通过下标偏移量访问到它的一个或者几个成员,这类类型统称为序列。
2.序列数据类型包括:字符串,列表,和元组类型。
3.特点: 成员关系操作符, 连接操作符, 重复操作符, 索引与切片操作符
列表的创建与删除
数组: 存储同一种数据类型的集和。scores=[12,95.5]
列表(打了激素的数组): 可以存储任意数据类型的集和。

定义一个空列表
list = []
定义一个包含元素的列表,元素可以是任意类型,包括数值类型,列表,字符串等均可, 也可以嵌套列表。
list = ["fentiao", 4, 'gender']
list = [['粉条', 100], ["粉丝", 90], ["粉带", 98]]

列表的添加
列表可通过append追加一个元素到列表中:
在这里插入图片描述
列表可通过extend方法拉伸, 实现追加多个元素到列表中
在这里插入图片描述
在指定位置添加元素使用insert方法;
L.insert(index, object)

在这里插入图片描述
列表的修改
修改列表的元素:直接重新赋值;
在这里插入图片描述

列表的查看
查看某个列表元素的下表用index方法;
查看某个列表元素出现的次数用count方法;

在这里插入图片描述
列表的删除
list.remove()删除列表中的指定元素。
list.pop()根据元素的索引值进行删除指定元素。
list.clear: 清空列表里面的所有元素
del(list[])

在这里插入图片描述在这里插入图片描述
上面的内容可以用一张表来展示
在这里插入图片描述

2.实战练习
会员信息管理系统
需求分析:      
注册、登录
代码:

 IDlist = [['root','westos'],
      ['student','redhat'],
      ['xinge','cool']
      ]
#print (IDlist)
while True:
    select = input("请选择R(注册)或E(登录):")
    if select == 'R':
        for item in range(3):
            ID = input('请输入帐号:')
            for id in IDlist:
                if ID == id[0]:
                    print("已存在账户,")
                    break
            else:
                PASS1 = input('请设置密码:')
                PASS2 = input('请再次输入密码:')
                if PASS1 == PASS2:
                    PASS = PASS1
                    print('注册成功!')

                IDlist.append([ID,PASS])
                #print(IDlist)
                break
            else:
                print('密码不一致,请重新输入')
    else:
        print("注册超时,请下次注册,再见!")
else:
    if select == 'E':
        #print(IDlist)
        for item in range(3):
            ID = input('账户:')
            for id in IDlist:
                if ID==id[0]:
                    PASS = input('密码:')
                    if PASS==id[1]:
                        print("登录成功")
                        exit()
                    else:
                        print("密码错误")
                        break
            else:
                print('账户不存在,请重新输入!')
        else:
            print("账户不存在")

运行截图:
在这里插入图片描述
在这里插入图片描述
二、元组
元组:带了紧箍咒的列表
t.count(value)–>int
返回value在元组中出现的次数;
t.index(value)
返回value在元组中的偏移量(即索引值)

补充: is和==的区别
1). Python中对象的三个基本要素,分别是:id(身份标识)、type(数据类型)和value(值)。

2). is和==都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同。

3). ==用来比较判断两个对象的value(值)是否相等;(type和value)
is也被叫做同一性运算符, 会判断id是否相同;(id, type 和value)
深拷贝和浅拷贝
赋值(=):如果直接用’='赋值的话就没有拷贝,指向同一片地址空间,改变一个,另一个也会改变

浅拷贝(copy.copy或li.copy()或切片赋值):如果只有一层的话和深拷贝就没有区别,但如果里面窃套了,那么它就会把窃套的数据的地址拷贝,改变原来第一层的值,拷贝后的内容不变(不影响),但改变窃套的内容的话,拷贝后的内容也会跟着变(因为浅拷贝拷过去的是窃套的地址)

深拷贝(copy.deepcopy()):会把里面的内容完全拷贝,不管有没有窃套,改变原来的值也对深拷贝后的内容没影响。

1.元组的创建,删除及特性

  • 定义空元组
    tuple = ()

  • 定义单个值的元组
    tuple = (fentiao,)

  • 一般的元组
    tuple = (fentiao, 8, male)
    特性:
    连接操作符,重复操作符,成员操作符
    索引, 切片

注意: 不能对元组的值任意更改;
1z
特性:
对元组分别赋值,引申对多个变量也可通过元组方式分别赋值
在这里插入图片描述
环境变量交换
特性:
对元组分别赋值,引申对多个变量也可通过元组方式分别赋值
在这里插入图片描述
x, y, z = 1, 2, ‘westos’ 等价于 (x, y, z) = (1, 2, ‘westos’) , 等号两边的对象都是元组并且元组的小括号是可选的。
在这里插入图片描述
深入理解环境变量交换

x=2; y=10;x, y = y, 2; print(x,y)
这种交换方式无需中间变量即可交换两个变量的值。那么具体实现机制是怎样的呢?

实现机制:
1). 构造一个元组(y, x);
2). 构造另一个元组(x, y);
3). 元组(y, x)赋值给(x, y),元组赋值过程从左到右,依次进行.

命名元组
Tuple还有一个兄弟,叫namedtuple。虽然都是tuple,但是功能更为强大。
collections.namedtuple(typename, field_names)
typename:类名称
field_names: 元组中元素的名称

命名元组是一个类,有两种方式来定义命名元组:
在这里插入图片描述
实例化命名元组,获得类的一个实例:
在这里插入图片描述
访问命名元组: 通过逗号运算符和属性名来访问元组字段的值
user.name; user.age, user.id
命名元组的属性
在这里插入图片描述

  • 9
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值