python_列表

1、列表的创建

列表与数组的区别
数组:存储同一数据类型的集合 score = [10,20,30]
列表:可以存储任意数据类型的集合

  • 例:
name = ['tom','bob']
print(type(name))    ##查看 name 的类型
运行结果:
<class 'list'>
  • 列表里可以存储不同的数据类型
li = [1,1.2,'hello',True]
print(li)
print(type(li))
运行结果:
[1, 1.2, 'hello', True]
<class 'list'>
  • 列表嵌套:列表里的元素也可以为列表(因为列表本身也是一种数据类型)
li1 = [1,1.2,'hello',True,[1,2,3,4,5]]
print(li1)
print(type(li1))
运行结果:
[1, 1.2, 'hello', True, [1, 2, 3, 4, 5]]
<class 'list'>

2、列表的特性

  • 索引
name = ['tom','bob','coco','danny']
print(name[0])
print(name[-1])
运行结果:
tom
danny
  • 切片
print(name[1:])
print(name[:-1])
print(name[::-1])
运行结果:
['bob', 'coco', 'danny']
['tom', 'bob', 'coco']
['danny', 'coco', 'bob', 'tom']
  • 重复
print(name * 3)
运行结果:
['tom', 'bob', 'coco', 'danny', 'tom', 'bob', 'coco', 'danny', 'tom', 'bob', 'coco', 'danny']
  • 连接
name = ['tom','bob','coco','danny']
name1 = ['lily','alic']
print(name + name1)
运行结果:
['tom', 'bob', 'coco', 'danny', 'lily', 'alic']
  • 成员操作符
print('coco' in name)
print('jinny' in name)
运行结果:
True
False
  • 迭代(for循环)
for i in name:
    print(i)
运行结果:
tom
bob
coco
danny
  • 例表里嵌套列表
  • 索引
name2 = [['tom',21],['coco',23],[1,2,3]]
print(name2[0][0])  ###打印name2列表中第一个列表的第一个元素
print(name2[2][1])   ###打印name2列表中第三个列表的第二个元素
运行结果:
tom
2
  • 切片
name2 = [['tom',21],['coco',23],[1,2,3]]
print(name2[:][1])  ##打印name2列表中所有元素中的第二个元素
print(name2[::-1][0])  ##逆序输出所有元素中的第一个
print(name2[0][:-1])  ##第一个元素中的显示-1元素前面的元素
运行结果:
['coco', 23]
[1, 2, 3]
['tom']

3、列表的增加

  • 1、直接添加
name = ['tom','bob','coco','danny']
print(name + ['jimmy'])
运行结果:
['tom', 'bob', 'coco', 'danny', 'jimmy']
  • 2、append:追加 追加一个元素到列表中
name.append('lily')
print(name)
运行结果:
['tom', 'bob', 'coco', 'danny', 'lily']
  • 3、extend:拉伸 追加多个元素到列表中
name.extend(['lily','jimmy'])
print(name)
运行结果:
['tom', 'bob', 'coco', 'danny', 'lily', 'jimmy']
  • 4、insert:在指定索引位置插入元素
name.insert(1,'lily')
print(name)
运行结果:
['tom', 'lily', 'bob', 'coco', 'danny']

4、列表的删除

  • pop:弹出列表元素,并未彻底删除。
  • 没有指定时,默认弹出末尾元素
name = ['tom','bob','coco','danny']
a = name.pop()
print(a)
print(name)
运行结果:
danny
['tom', 'bob', 'coco']
  • 指定弹出的元素索引
a = name.pop(1)
print(a)
print(name)
运行结果:
bob
['tom', 'coco', 'danny']
  • remove:删除指定元素
a = name.remove('bob')
print(name)
print(a)
运行结果:
['tom', 'coco', 'danny']
None   ### a 是空的,因为元素已经删除。
  • del:关键字 从内存中删除
print(name)
del(name)
print(name)
运行结果:
['tom', 'bob', 'coco', 'danny']
Traceback (most recent call last):
  File "/home/kiosk/PycharmProjects/python-test/test_02/列表_03.py", line 27, in <module>
    print(name)
NameError: name 'name' is not defined

5、列表的修改

  • 通过索引,重新赋值
name = ['tom','bob','coco','danny']
name[1] = 'tina'
print(name)
运行结果:
['tom', 'tina', 'coco', 'danny']
  • 通过切片
print(name[:2])
name[:2] = ['timi','kim']
print(name)
运行结果:
['tom', 'bob']
['timi', 'kim', 'coco', 'danny']

6、列表的查看

  • 查看出现的次数
name = ['tom','bob','coco','danny','tom','tom']
print(name.count('tom'))
print(name.count('kim'))
print(name.count('bob'))
运行结果:
3
0
1
  • 查看指定元素的索引值(可以指定索引范围查看)
name = ['tom','bob','tom','coco','danny','tom']
print(name.index('bob'))  
print(name.index('tom'))   ##当列表中出现多个相同的元素时,默认查找的是从左起第一个元素的索引值
print(name.index('tom',1,3))  ##指定索引范围查找元素的索引值
运行结果:
1
0
2

7、列表的排序

列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的。
sorted返回一个有序的副本,并且类型总是列表

  • 按照ASCII码排序
name = ['tom','bob','tom','coco','danny','tom']
name.sort()
print(name)
运行结果:
['bob', 'coco', 'danny', 'tom', 'tom', 'tom']
name = ['Tom','bob','Coco','danny',]
name.sort()
print(name)
运行结果:
['Coco', 'Tom', 'bob', 'danny']
  • random.shuffle :将默认原顺序打乱
import random
li = list(range(10))
print(li)
random.shuffle(li)
print(li)
运行结果:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[4, 2, 3, 7, 8, 0, 1, 5, 9, 6]

8、列表的示例练习

  • 例1
"""
# _*_coding:utf-8 _*_
Name:列表_04.py
Date:4/2/19
Author:LiMin-wsp
Connect:314690259@qq.com
Desc:
"""
"""
假定有下面的列表:
names = ['fentiao','fendai','fensi','apple']
输出结果为: 'I have fentiao, fendai, fensi and apple.'
"""
names = ['fentiao','fendai','fensi','apple']
names1=','.join(names[:-1])
print('I have ' + names1 + ' and ' + names[-1] + '.')
运行结果:
I have fentiao, fendai, fensi and apple.
  • 例2:用户登陆信息管理
  • 第一种方法:
"""
# _*_coding:utf-8 _*_
Name:列表_05.py
Date:4/2/19
Author:LiMin-wsp
Connect:314690259@qq.com
Desc:
"""
"""
1.系统里面有多个用户,用户的信息目前保存在列表里面
    users = ['root','westos']
    passwd = ['123','456']
2.用户登陆(判断用户登陆是否成功
    1).判断用户是否存在
    2).如果存在
        1).判断用户密码是否正确
        如果正确,登陆成功,推出循环
        如果密码不正确,重新登陆,总共有三次机会登陆
    3).如果用户不存在
    重新登陆,总共有三次机会
"""
users = ['root','westos']
passwd = ['123','456']
num = 0
n = len(users)
while num <3:
    inusers = input('请输入用户名: ')
    if inusers not in users:
        print('该用户不存在!')
        print('你还有%d次机会' %(2-num))
        num += 1
    else:
        password = input('请输入密码: ')
        for i in range(n):
            if inusers == users[i] and password == passwd[i]:
                print('密码正确,欢迎登陆')
                exit()
        else:
            print('密码错误,你还有%d次机会' %(2-num))
            num += 1
else:
    print('你已经超过三次机会,请稍后重试!')
  • 第二种方法:
users = ['root','westos']
passwds = ['123','456']
#尝试登录的次数
trycount = 0
while trycount < 3:
    #接收用户输入
    inuser = input('用户名:')
    #尝试次数加1
    trycount += 1
    if inuser in users:
        inpasswd = input('密码:')
         #先找出用户对应的索引值
        index = users.index(inuser)  ##index为索引值  
        passwd = passwds[index]
        if inpasswd == passwd:
            print('%s登录成功' %(inuser))
            break
        else:
            print('%s登录失败:密码错误' %(inuser))
            print('你还有%d次机会' %(3-trycount))
    else:
        print('用户%s不存在' %inuser)
        print('你还有%d次机会' % (3 - trycount))
else:
    print('尝试次数超过三次,请稍后登录...')
运行结果:
用户名:123
用户123不存在
你还有2次机会
用户名:westos
密码:233
westos登录失败:密码错误
你还有1次机会
用户名:root
密码:123
root登录成功
  • 例3:后台会员信息管理
"""
# _*_coding:utf-8 _*_
Name:列表_06.py
Date:4/2/19
Author:LiMin-wsp
Connect:314690259@qq.com
Desc:
"""
"""
# 1. 后台管理员只有一个用户: admin, 密码: admin
# 2. 当管理员登陆成功后, 可以管理前台会员信息.
# 3. 会员信息管理包含:
#       添加会员信息
#       删除会员信息
#       查看会员信息
#       退出
 - 添加用户:
    1). 判断用户是否存在?
    2).  如果存在, 报错;
    3).  如果不存在,添加用户名和密码分别到列表中;

- 删除用户
    1). 判断用户名是否存在
    2). 如果存在,删除;
    3). 如果不存在, 报错;
"""
print("管理员登陆".center(50,'*'))
name = input('用户名:')
passwd = input('密码:')
user = []
password = []
if name == 'admin' and passwd == 'admin':
    print("""
        操作目录
    1)添加会员信息
    2)删除会员信息
    3)查看会员信息
    4)退出
    """)
    while 1:
        char = input('请输入你的选择:')
        if char == '1':
            print('请输入添加用户的信息!')
            inuser = input('用户名:')
            if inuser in user:
                print('该用户已经存在!!')
            else:
                inpasswd = input('密码:')
                user.append(inuser)
                password.append(inpasswd)            
                print('%s用户添加成功!'%inuser)
        elif char == '2':
            inuser = input('您要删除的用户:')
            if inuser in user:
                index = user.index(inuser)
                outuser = user.pop(index)
                outpasswd = password.pop(index)      
                print('%s用户删除成功!'%inuser)
            else:
                print('该用户不存在!!')
        elif char == '3':
            print('查看会员信息'.center(50, '*'))
            print('\t用户名\t密码')
            UserCount = len(user)
            for i in range(UserCount):
                print('\t%s\t%s' % (user[i], password[i]))
        elif char == '4':
            exit()
else:
    print('用户名和密码错误,请重新登陆。')

运行结果:
**********************管理员登陆***********************
用户名:admin
密码:admin

        操作目录
    1)添加会员信息
    2)删除会员信息
    3)查看会员信息
    4)退出
    
请输入你的选择:2
您要删除的用户:e
该用户不存在!!
请输入你的选择:1
请输入添加用户的信息!
用户名:ad
密码:aa
ad用户添加成功!
请输入你的选择:1
请输入添加用户的信息!
用户名:ad
该用户已经存在!!
请输入你的选择:3
**********************查看会员信息**********************
	用户名	密码
	ad	aa
请输入你的选择:1
请输入添加用户的信息!
用户名:gg
密码:123
['ad', 'gg']
gg用户添加成功!
请输入你的选择:2
您要删除的用户:ww
该用户不存在!!
请输入你的选择:gg
请输入你的选择:2
您要删除的用户:gg
['ad']
gg用户删除成功!
请输入你的选择:3
**********************查看会员信息**********************
	用户名	密码
	ad	aa
请输入你的选择:4
  • 例4:栈的工作原理
"""
# _*_coding:utf-8 _*_
Name:列表_07.py
Date:4/2/19
Author:LiMin-wsp
Connect:314690259@qq.com
Desc:
"""
"""
栈的工作原理
    入栈
    出栈
    查看栈顶元素
    栈的长度
    栈是否为空
"""
zhan = []
info = """
    栈操作
    1.入栈
    2.出栈
    3.查看栈顶元素
    4.栈的长度
    5.栈是否为空
    q.退出
"""

print(info)
while 1:
    char = input('请输入你的操作:')
    if char == '1':
        item = input('请输入入栈元素: ')
        zhan.append(item)
        print('%s元素入栈成功!' %item)
    elif char == '2':
        if len(zhan) == 0:
            print('栈为空,没有元素出栈!!')
        else:
            item = zhan.pop(-1)
            print('%s元素出栈成功' %item)
    elif char == '3':
        if len(zhan) == 0:
            print('栈为空,没有元素!!')
        else:
            print('栈顶元素为%s'%zhan[-1])
    elif char == '4':
        print('栈的长度为:%s'%len(zhan))
    elif char == '5':
        if len(zhan) == 0:
            print('栈为空!')
        else:
            print('栈不为空!')
    elif char == 'q':
        exit()
    else:
        print('请输入正确的操作。')
运行结果:
  栈操作
    1.入栈
    2.出栈
    3.查看栈顶元素
    4.栈的长度
    5.栈是否为空
    q.退出

请输入你的操作:1
请输入入栈元素: 23
23元素入栈成功!
请输入你的操作:44
请输入正确的操作。
请输入你的操作:rr
请输入正确的操作。
请输入你的操作:3
栈顶元素为23
请输入你的操作:2
23元素出栈成功
请输入你的操作:4
栈的长度为:0
请输入你的操作:5
栈为空!
请输入你的操作:q
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值