1.列表
列表是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目。
列表中的项目应该包括在方括号[ ]中,这样Python就知道你是指明一个列表。一旦你创建了一个列表,就可以添加、删除,或者是搜索列表中的项目。由于你可以增加或者删除项目,我们说列表是可变的数据类型,即这种类型是可以被改变的,且列表是可以嵌套的。
(1)创建列表
a = [] ##定义一个空列表
print(a)
[]
print(type(a))
<class 'list'> ##输出类型为列表
a = [1,2,3,4,5,6,7]
print(a)
[1, 2, 3, 4, 5, 6, 7]
- 列表里可以存储不同的数据类型
li = [1,1.2,'hello',True]
- 列表嵌套
li1 = [1,1.2,'hello',True,[1,2,3,4,5]]
(2)列表的特性
定义一个列表:
service = ['http','ssh','ftp','dns']
- 索引
print(service[0]) ##索引列表的第一个元素
print(service[-1]) ##索引列表中的最后一个元素
- 切片
print(service[1:]) ##输出列表中除了第一个元素的值
print(service[:-1]) ##输出列表中除了最后一个元素的值
print(service[::-1]) ##将列表的成员倒序输出
- 重复
print(service * 3) ##将列表里的所有成员输出三次
- 连接
service1 = ['mysql','firewalld']
print(service + service1)
- 成员操作符
print('mysql' in service1)
print('mysql' not in service1) ##返回一个布尔值:Ture/False
- 迭代
for se in service:
print(se)
- 列表里嵌套列表
service2 = [['http',80],['ssh',22],['ftp',21]]
- 索引列表里的列表
print(service2[0][1])
print(service2[-1][1])
- 对列表里的列表切片
print(service2[:][1])
print(service2[:-1][0])
print(service2[0][:-1])
(3)添加列表元素
定义一个列表:
service = ['http','ssh','ftp','dns']
- append:追加 追加一个元素到列表中
service.append('firewalld')
- extend:拉伸 追加多个元素到列表中
service.extend(['mysql','firewalld'])
- insert:在指定索引位置插入元素
service.insert(1,'samba')
(4)删除列表元素
定义一个数组:
service = ['http','ssh','ftp','dns']
- pop:该方法默认弹出列表的最后一个元素;这个方法还可以灵活运用,当为它加上一个索引值作为默认参数的时候,它会弹出这个索引值对应的元素
service.pop()
service.pop(2)
- remove:使用该方法删除元素,你并不需要知道这个元素在列表中的具体位置,只需要知道该元素存在列表中就可以了。如果要删除的东西根本不在列表中,程序就会报错
service.remove('ssh')
- del:注意,del是一个语句,不是一个列表的方法,所以不必在它后面加上小括号()。如果你想删除整个列表,还可以直接用del加列表名删除(从内存中删除列表)
(5)列表的修改
- 方法一:通过索引,重新赋值
service[0] = 'mysql'
print(service)
- 方法二:通过切片进行修改
print(service[:2])
service[:2] = ['samba','nfs']
print(service)
(6)列表的查看
- 查看指定元素出现的次数
service = ['ftp','ssh','ftp','dns']
print(service.count('ftp'))
print(service.count('dns'))
- 查看指定元素的索引值(可以指定索引范围查看)
print(service.index('ssh'))
print(service.index('ftp',1,4))
(7)列表元素的排序
创建以下列表:
s = [1,3,5,7,9,2,4,6,8]
观察两种排序方法的区别:
- 将原有的列表顺序打乱
2.列表相关练习题
练习题1:
- 代码演示
users = ['root','westos']
passwords = ['123','456']
#尝试登录次数
trycount = 0
while trycount < 3:
inuser = input('用户名: ')
inpassword = input('密码: ')
trycount += 1
if inuser in users:
index = users.index(inuser)
password = passwords[index]
if inpassword == password:
print('%s登录成功' %(inuser))
break
else:
print('%s登录失败 : 密码错误' %inuser)
else:
print('用户%s不存在' %inuser)
else:
print('尝试超过三次,请稍后再试')
练习题2:
adminname = 'admin'
adminpasswd = 'admin'
users = ['root','westos']
passwds = ['123','456']
print('管理员登陆'.center(50,'*'))
for i in range(3):
uname = input('Username= ')
upasswd = input('Password= ')
if uname == adminname and upasswd == adminpasswd:
print('登陆成功'.center(50,'*'))
while True:
print('管理目录'.center(50, '*'))
print("""
1.添加会员信息
2.删除会员信息
3.查看会员信息
4.退出
""")
choice = input('请输入您的选择: ')
if choice == '1':
print('添加会员信息'.center(50, '*'))
aname = input('添加帐号: ')
if aname in users:
print('用户%s已经存在' %(aname))
else:
apasswd = input('添加密码: ')
users.append(aname)
passwds.append(apasswd)
print('用户%s添加成功' %(aname))
elif choice == '2':
print('删除会员信息'.center(50, '*'))
dname = input('删除帐号: ')
if dname in users:
num = users.index(dname)
dpasswd =passwds[num]
users.remove(dname)
passwds.remove(dpasswd)
print('用户%s删除成功' %(dname))
else:
print('用户%s不存在' %(dname))
elif choice == '3':
print('查看会员信息'.center(50, '*'))
print('\t用户名\t密码')
usercount = len(users)
for usernum in range(usercount):
print('\t%s \t%s' %(users[usernum],passwds[usernum]))
elif choice == '4':
exit()
else:
print('请输入正确的序号!!')
else:
print('管理员登陆失败')
i = i + 1
j = 3 - i
print('您剩余登陆次数为%s' %(j))
else:
print('登陆失败,请您稍后再试')
练习题3:
写一段小程序模仿栈的工作原理
入栈(先入后出,后入先出)
出栈
查看栈顶元素
查看栈的长度
判断栈是否为空
退出程序
代码: