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