【python】内置数据结构——列表

【引言】python提供了4个内置数据结构,可以用来保存任何对象集合,它们分别是列表元组字典集合。python有两个有序的集合数据结构(列表和元组),列表是其中之一。

1. 列表的概念

列表是一个有序的可变对象索引集合,列表中的每个对象从0开始编号。
与数组不同的是:
1)列表是异构的。可以在一个列表中存放不同类型的对象 ,且不需要预声明所有存储的对象的类型
2)列表是动态的。可以根据需要扩展和收缩,使用列表存储任何对象之前不需要预声明列表的大小
3)列表是可变的。可以在任何时间通过增加、删除或者修改对象来修改列表。

2. 列表的创建

列表总是用中括号包围,并且列表中包含的对象之间总是用逗号分隔。列表的创建有两种方式,一种是按字面创建另一种是在代码中为列表追加或者扩展对象。如下图就是字面创建。

在这里插入图片描述
也可以在运行时“扩展列表”。列表提供了一组内置方法,可以用来处理列表的对象。要调用一个方法,可以使用点记法语法:在列表名后面加一个点号和方法调用。对于现在来说,我们先使用append方法在创建的空列表末尾增加对象。
在这里插入图片描述

3. 列表的特性

1)索引

service = ['http','ssh','ftp']

print(service[0])          //正向索引
print(service[-1])         //反向索引

在这里插入图片描述

2)切片

print(service[::-1])      //列表的反转
print(service[1::])       //除了第一个之外的其他元素
print(service[:-1])       //除了最后一个之外的其他元素

在这里插入图片描述

3)重复
在这里插入图片描述

4)连接
在这里插入图片描述

5)成员操作符
如何检查一个列表中是否包含某个对象呢?用“in”来检查。
在这里插入图片描述
除了使用in操作符检查一个对象是否包含在一个列表中,还可以使用not in操作符组合来检查一个列表中是否不存在某个对象。
在这里插入图片描述

扫描二维码关注公众号,回复: 4287358 查看本文章

6)列表中嵌套列表
在这里插入图片描述

4. 列表的增加

append:追加,追加一个对象到列表中
在这里插入图片描述
insert:在索引位置插入对象
在这里插入图片描述
extend:拉伸,追加多个对象到列表中
在这里插入图片描述
append和extend的区别:
在这里插入图片描述

5. 列表的删除

pop:可以根据对象的索引值从列表中删除和返回一个对象。如果调用pop时没有指定索引值,将删除和返回列表中的最后一个对象。如果指定了一个索引值,则会删除和返回那个位置上的对象。如果列表为空或者调用pop时指定了一个不存在的索引值,解释器会产生一个错误。
在这里插入图片描述
remove:从列表中删除指定数据值的第一次出现。如果在列表中找到了这个数据值,就会从列表中删除包含这个值的对象。如果在列表中没有找到这个数据值,解释器会产生一个错误。
在这里插入图片描述
claer:清空列表里面的所有元素
在这里插入图片描述
del:(python关键字) 从内存中删除列表或指定对象
在这里插入图片描述
在这里插入图片描述

6. 列表的修改

通过索引,重新赋值
在这里插入图片描述
通过切片
在这里插入图片描述

7. 列表的查看

count:查看对象出现的次数
在这里插入图片描述
index:查看指定对象的索引值,返回的是指定数据值第一次出现的索引值。也可以指定范围
在这里插入图片描述

sort:排序查看(按照ascii码进行排序)
在这里插入图片描述

在这里插入图片描述

由于字母大小写的ascii码值不一样,所以排序出来大写在小写前面。
在这里插入图片描述
对字符串排序不区分大小写的方法如下。
在这里插入图片描述

8. 列表的练习

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

2)实现“栈”

info = """
***********数据结构之栈***********
        1.入栈
        2.出栈
        3.栈顶元素
        4.栈的长度
        5.栈是否为空
        q.退出
"""

print(info)

stack = []
while True:
    choice = input('请输入你的选择:')
    if choice == '1':
        item = int(input('请输入你要入栈的元素:'))
        stack.append(item)
        print("入栈成功,入栈元素为%s" %(item))
        print(stack)
    elif choice == '2':
        if not stack:
            print("栈为空,无法出栈")
        else:
            item = stack.pop()
            print("出栈成功,出栈元素为%s" %(item))
            print(stack)
    elif choice == '3':
        if len(stack) == '0':
           print("栈为空")
        else:
            item = stack[-1]
            print("栈顶元素为%s" %(item))
    elif choice == '4':
        print("栈的长度为%s" %(len(stack)))
    elif choice == '5' :
        if not stack:
            print("栈为空")
        else:
            print("栈不为空")
            print(stack)
    elif choice =='q' :
        break
    else:
        print("请输入正确的选择")

在这里插入图片描述

在这里插入图片描述

3)用户管理系统
在这里插入图片描述

users = ['potizo', 'zoe']
passwds = ['123', '456']

# 尝试登陆的次数
trycount = 0

while trycount < 3:
    inuser = input('用户名:')
    inpasswd = input('密码:')
    # 尝试次数加1
    trycount += 1
    if inuser in users:
        # 判断用户密码是否正确
        index = users.index(inuser)
        passwd = passwds[index]
        if inpasswd == passwd:
            print('%s登陆成功' % (inuser))
            break
        else:
            print('%s登陆失败:密码错误' % (inuser))
    else:
        print('用户%s不存在' % (inuser))
else:
    print('已经超过3次机会了~')

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/potizo/article/details/84453698
今日推荐