Python基础之引用类型(列表list、元组tuple)

list的基本使用

列表:高级数组

概念:

存储多个数据(多个数据可以是任意类型)

定义形式:

scores=[33,55,88,11,99]

names=[‘zs’,‘ls’,‘ww’]

names=['zs','ls','ww']
# 最后一个学生名字
print(names[-1])
print(names[2])
print(names[len(names)-1])
# IndexError: list index out of range
# print(names[3])

# 遍历列表中的所有元素
# while
i=0
while i<len(names):
    print('names[%d]=%s'%(i,names[i]))
    i+=1

# for
for name in names:
    print(name)

for i in range(len(names)):
    print('names[%d]=%s'%(i,names[i]))

list的增删查改

需求:

加入购物车

从购物车删除

查询

修改

1、增

(1) Add

(2) Append

(3) Insert

(4) extend

2、删除

(1) Remove

(2) Del

(3) Pop

(4) Clear

3、查询

(1) Index

(2) Count

(3) In

(4) Not in

相关代码

names=[]
# 新增
names.append('zs')
names.append('ls')
print(names)
names.insert(0,'ww')
print(names)

names2=['mazi','tianqi']
# names.append(names2)
# ['ww', 'zs', 'ls', ['mazi', 'tianqi']]
# print(names)
names.extend(names2)
# ['ww', 'zs', 'ls', 'mazi', 'tianqi']
print(names)

# 删除
# 删除mazi
names.remove('mazi')
print(names)
# 删除角标为0的元素
names.pop(0)
print(names)
# 清空names列表
# names.clear()
# print(names)
# 将这个列表数据清空,同时清除掉栈内的地址引用
# del names
# NameError: name 'names' is not defined
# print(names)

# 查询
# list中没有的元素:ValueError: 'll' is not in list
# print(names.index('ll'))
print(names.index('ls'))
print(names.count('ls'))
# 没有的元素返回0
print(names.count('ll'))
print('ll' not in names)
print('ls' in names)

# 修改
if 'zs' in names:
    index=names.index('zs')
    names[index]='zsf'
else:
    print('zs is not exists')
print(names)

嵌套列表的内存及遍历

列表中元素排序

Sort()

按照自然顺序(从小到大)进行排序

对源数据直接进行排序,不会生成新的备份

list1=[22,66,99,55,11,77]
# [11, 22, 55, 66, 77, 99]
# list2 = list1.sort()
# [99, 77, 66, 55, 22, 11]
list2 = list1.sort(reverse=True)
print(list1)
# None
print(list2)

列表的嵌套使用

# list2=[[1,2,3],[4,5],[6,7,8,9]]
list2=[[1,2,3],4,5,[6,7,8,9]]
for x in list2:
    if(type(x) == list):
        for y in x:
            print(y)
    else:
        print(x)

嵌套列表在内存中的存放结构,如图所示:
在这里插入图片描述

学生管理系统修改功能

练习:

存储学生信息:

Students=[[],[].[]]

项目:学生管理系统v1.0

欢迎光临学生管理系统v1.0

1、添加学生

2、查找学生

3、展示所有

4、删除学生

5、修改学生

6、退出系统

students=[]
while True:
    print("欢迎光临学生管理系统v1.0:")
    print("1、添加学生")
    print("2、查找学生")
    print("3、展示所有")
    print("4、删除学生")
    print("5、修改学生")
    print("6、退出系统")
    choose=input("请选择1-6:")
    if choose=='1':
        # 添加学生逻辑
        name=input("学生姓名")
        score=input("学生分数")
        student=[name,score]
        students.append(student)
        print("添加成功")
    elif choose=='2':
        pass
    elif choose=='3':
        print("所有学生信息如下",end=":")
        print(students)
    elif choose=='4':
        pass
    elif choose=='5':
        # 修改逻辑
        name=input('请输入你要修改的学生的姓名:\n')
        index=-1
        for i in range(len(students)):
            if name in students[i]:
                index=i
                break

        if index==-1:
            print('对不起,没有你要修改的学生信息')
        else:
            new_name=input('请输入新的名字')
            students[index][0]=new_name
            new_score=int(input("请输入修改后的分数"))
            students[index][1]=new_score
            print("修改成功")

    elif choose=='6':
        print("退出系统,欢迎再次使用")
        break

tuple的基本使用

表示元组:(元素1,元素2,…)

不可变:存储的元素的值,不可修改,不可删除

其方法跟列表list中的方法完全一致

额外要注意的是元组与列表之间的相互转换

tuple1=('学生1',99)
# <class 'tuple'>
print(type(tuple1))

# 访问索引值对应的元素
print(tuple1[0])
print(tuple1[-1])
print(tuple1[len(tuple1)-1])

# TypeError: 'tuple' object doesn't support item deletion
# del tuple1[0]
# TypeError: 'tuple' object does not support item assignment
# tuple1[1]=11

print(tuple1.index(99))
print(tuple1.count(99))
print(99 in tuple1)
print(99 not in tuple1)

# 将元组转换为列表(tuple-->list)
# 通过下面代码间接将元组中的元素值给改变了
list1=list(tuple1)
print(list1)
list1[1]=100
tuple1=tuple(list1)
print(tuple1)

谢谢大家,多多指教!!!
在这里插入图片描述

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值