python列表实现及练习

列表的基本方法

name=["A","B","C","D","E","B","C","D","E"]
'''1、切片'''
print(name[1],name[2])
print(name[1:3]) #输出下标为1到3的元素不包括下标为3的元素
print(name[-1])  #列表最后一个元素
print(name[4])
print(name[-4:-1])  #输出下标为5到最后一个元素不包括最后一个元素
print(name[0:])   #输出下标为0到最后一个元素
print(name[0::2])  #从下标为0,每隔两个元素进行输出

'''2、列表插入'''
name.append("郭倩")
print(name)

'''3、两个列表进行合并'''
name1=["郭倩"]
name=name+name1
print(name)
'''4、在指定位置进行插入'''
name.insert(2,"郭倩")
print(name)

'''5、修改'''
name[1]="郭倩"
print(name)

运行结果如下:

B C
['B', 'C']
E
E
['B', 'C', 'D']
['A', 'B', 'C', 'D', 'E', 'B', 'C', 'D', 'E']
['A', 'C', 'E', 'C', 'E']
['A', 'B', 'C', 'D', 'E', 'B', 'C', 'D', 'E', '郭倩']
['A', 'B', 'C', 'D', 'E', 'B', 'C', 'D', 'E', '郭倩', '郭倩']
['A', 'B', '郭倩', 'C', 'D', 'E', 'B', 'C', 'D', 'E', '郭倩', '郭倩']
['A', '郭倩', '郭倩', 'C', 'D', 'E', 'B', 'C', 'D', 'E', '郭倩', '郭倩']

name=["A","B","C","D","E","B","C","D","E"]
'''6、删除'''
name.remove("E")
print(name)
# name.remove(4)  #只能删除列表中存在的元素
# print(name)
'''7、删除指定元素'''
del name[2]   #删除下标为2的元素
print(name)

s="fjdksl"
s1=s  #将s的值赋值给S1
del s  #删除S但并不影响S1的值,所以S1正常输出
print(s1)
# print(s)

运行结果为:

['A', 'B', 'C', 'D', 'B', 'C', 'D', 'E']
['A', 'B', 'D', 'B', 'C', 'D', 'E']
fjdksl
'''8、抛出'''
name1=["A","B","C","D","E","B","C","D","E"]
a=name1.pop(3)
print(name1)
print(a)

name2=["A","B","C","D","E","B","C","D","E"]
'''9、查找元素'''
'''n=[1,2,3,4,5,2,3,4,5]'''
print(name2.index("D"))
print(name2.index("D",2,-1))

'''10、输出元素个数'''
print(name2.count("E"))

'''11、清除(清空)'''
name2.clear()
print(name2)

name3=["A","B","C","D","E","B","C","D","E"]
'''12、反转顺序'''
name3.reverse()
print(name3)

'''13、合并(添加)'''
n=[5,6,7,8,9]
name3.extend(n)
print(name3)

运行结果为:

['A', 'B', 'C', 'E', 'B', 'C', 'D', 'E']
D
3
3
2
[]
['E', 'D', 'C', 'B', 'E', 'D', 'C', 'B', 'A']
['E', 'D', 'C', 'B', 'E', 'D', 'C', 'B', 'A', 5, 6, 7, 8, 9]

浅复制与深复制

浅复制也称浅拷贝

#方式一:
name1=["魏海丽","米刚","邵世超",["a","b"]]
name2=name1.copy()
# name2=name1
print(name1)
print(name2)
name1[1]="++++++"  #name1中的元素改变,不会影响name2
print(name1)
print(name2)
print(id(name1))
print(id(name2))
'''运行结果为:
['魏海丽', '米刚', '邵世超', ['a', 'b']]
['魏海丽', '米刚', '邵世超', ['a', 'b']]
['魏海丽', '++++++', '邵世超', ['a', 'b']]
['魏海丽', '米刚', '邵世超', ['a', 'b']]
48041136
48041216
'''
#方式二:
n=[9999]
name1=["魏海丽","米刚","邵世超",n]
name2=name1.copy()
print(name1)
print(name2)
name1[-1][0]="000000"
name1[0]="+++++"
print(name1)
print(name2)
'''
运行结果为:
['魏海丽', '米刚', '邵世超', [9999]]
['魏海丽', '米刚', '邵世超', [9999]]
['+++++', '米刚', '邵世超', ['000000']]
['魏海丽', '米刚', '邵世超', ['000000']]

'''

在使用浅拷贝的时候,发现引用的id都是相同的,但是字符串的id却发生了变化,是因为在python中,字符串是不可变的,从而在每次进行修改的时候,都是新建一个对象,从而引用发生了变化。

深拷贝

'''深拷贝'''
import copy
name1=["魏海丽","米刚","邵世超",["a","b"]]
name2=copy.deepcopy(name1)
print(name2,id(name2))
name1[-1][0]="))))"  
print(name1,id(name1))
print(name2,id(name2)) #不会改变其值,引用的都是同一地址

运行结果为:

['魏海丽', '米刚', '邵世超', ['a', 'b']] 47314104
['魏海丽', '米刚', '邵世超', ['))))', 'b']] 47313344
['魏海丽', '米刚', '邵世超', ['a', 'b']] 47314104

简单案例

1.取出列表中的重复项

#方式一
n=["a","b","c","d","a","b","c","e","f","g","h","l"]
for i in range(len(n)):
    if n[i]==n[i-1]:  #这里只能是i-1,如果写成i+1的话会超出索引的界限
        n.remove(n[i]) #值相同时去掉其中的一个
    else:
        print(n[i])
#方式二
n=["a","b","c","d","a","b","c","e","f","g","h","l"]
a=[]
for i in n:
    if i not in a:
        a.append(i)
    else:
        continue
print(a)

2.模拟ATM存取等操作

def t3(*args,**kwargs):
    while True:
           print("===================请输入你的选项======================")
           print("==1.查询余额 2.转账 3.取款 4.存款 5.返回主菜单 6.退出==")
           print("=======================================================")
           num1=int(input("请输入你的选项:"))
           def z1(*args,**kwargs):
              print("你的余额为:",Mony[0],"元")
           def z2(*args,**kwargs):
                user2=input("请输入对方用户名:")
                mony2=int(input("请输入转账金额:"))
                for i in range(len(lis2)):
                    if lis2[i][0]==user2:  #遍历注册信息列表,寻找与输入的信息是否相等
                         global k
                         k=i  #把相同的信息下标赋给K
                         break
                if lis2[k][0]==user2:
                    Mony[0]-=mony2
                    print("转账成功!!")
                else:
                    print("无此用户,请输入正确的用户名称!!")
                    z2()
                print("剩余", Mony[0],"元")
           def z3(*args,**kwargs):
                num2=int(input("请输入取款金额:"))
                Mony[0]-=num2
                print("您的余额剩余:", Mony[0],"元")
           def z4(*args,**kwargs):
                num3=int(input("请输入存款金额:"))
                Mony[0]+=num3
                print("您的余额剩余:", Mony[0],"元")
           def z5(*args,**kwargs):
                M()
           if num1==1:
               z1(Mony)
           elif num1==2:
               z2(lis,Mony)
           elif num1==3:
               z3(Mony)
           elif num1==4:
               z4(Mony)
           elif num1==5:
               z5()
               break
           elif num1==6:
               break
lis2=[]
def M():
    while True:
        print("==========欢迎使用蜗牛ATM无限制存取系统=============")
        print("======请输入你的选项:1:登陆 2:注册 3:退出=======")
        print("====================================================")
        num=int(input("请输入选项:"))
        def t1(*args,**kwargs):
            while True:
                user=input("请输入用户名:")
                pad=int(input("请输入密码:"))
                # print(lis[i])
                for i in range(len(lis2)):
                    if user==lis2[i][0]:
                        global k
                        k=i
                        break
                    # i+=1
                if user==lis2[k][0] and pad==lis2[k][1]:
                    print("恭喜你,登陆成功!!")
                    k=0
                    t3()
                else:
                    print("登陆失败!!")

        def t2(*args,**kwargs):
            global lis
            global lis2
            use1=input("请输入用户名(长度<20):")
            pasw1=int(input("请输入密码(长度<6):"))
            def p1():
                pasw2=int(input("再次确认密码:"))
                if pasw1==pasw2:
                    pass
                else:
                    print("你输入的密码不一致,请从新输入!!!")
                    p1()
            p1()
            age=int(input("请输入年龄:"))

            def sex1():
                global sex
                sex=input("请输入性别:")
                if sex=="男" or sex=="女":
                    pass
                else:
                    print("输入的格式不正确,请重新输入!!")
                    sex1()
            sex1()
            phon=int(input("请输入电话号:"))
            lis=[use1,pasw1,age,sex,phon]
            # print(lis)
            lis2.append(lis)
            # print(lis2)
            print("注册成功,恭喜你获得5000元余额!!")
            global Mony
            Mony=[5000]
        if num==1:
            t1(lis2)
        elif num==2:
            t2()
        elif num==3:
            break
M()

运行结果为:

==========欢迎使用蜗牛ATM无限制存取系统=============
======请输入你的选项:1:登陆 2:注册 3:退出=======
====================================================
请输入选项:2
请输入用户名(长度<20):ur
请输入密码(长度<6):123
再次确认密码:123
请输入年龄:18
请输入性别:男
请输入电话号:1872985614
注册成功,恭喜你获得5000元余额!!
==========欢迎使用蜗牛ATM无限制存取系统=============
======请输入你的选项:1:登陆 2:注册 3:退出=======
====================================================
请输入选项:1
请输入用户名:ur
请输入密码:123
恭喜你,登陆成功!!
===================请输入你的选项======================
==1.查询余额 2.转账 3.取款 4.存款 5.返回主菜单 6.退出==
=======================================================
请输入你的选项:1
你的余额为: 5000 元
===================请输入你的选项======================
==1.查询余额 2.转账 3.取款 4.存款 5.返回主菜单 6.退出==
=======================================================
请输入你的选项:3
请输入取款金额:1000
您的余额剩余: 4000 元
===================请输入你的选项======================
==1.查询余额 2.转账 3.取款 4.存款 5.返回主菜单 6.退出==
=======================================================
请输入你的选项:4
请输入存款金额:100
您的余额剩余: 4100 元
===================请输入你的选项======================
==1.查询余额 2.转账 3.取款 4.存款 5.返回主菜单 6.退出==
=======================================================
请输入你的选项:5
==========欢迎使用蜗牛ATM无限制存取系统=============
======请输入你的选项:1:登陆 2:注册 3:退出=======
====================================================
请输入选项:3

在这里我就不一一把运行结果粘出来了,其中存在少许的逻辑错误,但不影响其实现效果,充分联系了列表的方法使用等

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值