1.列表的表示
列表是由一系列按特定顺序排列的元素组成的。 列表(打了激素的数组): 可以存储任意数据类型的集和
在python中,用方括号([ ])来表示列表,并且用逗号分隔其中的元素。
注:列表里面也是可以潜逃列表的;
2.列表的特性
1.索引
下标是从0开始计算,比如list[0]读取的是列表的第1个元素
services = ['http', 'ssh', 'ftp']
# 正向索引
print(services[0])
# 反向索引
print(services[-1])
2.切片
services = ['http', 'ssh', 'ftp']
print(services[::-1]) # 列表的反转
print(services[1:]) # 除了第一个之外的其他元素
print(services[:-1]) # 除了最后一个之外的其他元素
3.重复
services = ['http', 'ssh', 'ftp']
print(services*3)
4.连接
services = ['http', 'ssh', 'ftp']
services1 = ['mysql', 'firewalld']
print(services + services1)
5.成员操作符
print('firewalld' in services)
print('ftp' in services)
print('firewalld' not in services)
print('ftp' not in services)
6.列表里面嵌套列表
services2 = [['http', 80], ['ssh', 22], ['ftp',21]]
# 索引
print(services2[0][0])
print(services2[-1][1])
# 切片
print(services2[:][1])
print(services2[:-1][0])
print(services2[0][:-1])
7.如何for循环遍历
print("服务显示".center(50, "*"))
for service in services:
例:根据用于指定月份,打印该月份所属的季节。
month = int(input('Month:')) if month in [3, 4, 5]: print("春季") elif month in [6, 7, 8]: print('夏季') elif month in [9,10,11]: print('秋季') elif month in [12,1,2]: print('冬季') else: print("月份不合法")
8.如何实现print输出不换行
# python2:print不换行(在后面加逗号即可)
# print "hello",
# python3:
print("hello", end=',')
3.列表元素的管理
例:假定有下面这样的列表:
names = ['fentiao', 'fendai', 'fensi', 'apple']
使输出结果为:'I have fentiao, fendai, fensi and apple.'
names = ['westos', 'fentiao', 'fendai', 'fensi']
print("Student: " + ",".join(names[:-1]) + ' and ' + names[-1] )
1.列表元素的增加
services = ['http', 'ssh', 'ftp']
# 1.‘+’(一般不用此方法)
print(services+['firewalld'])
# 2. append:追加: append是追加一个元素到列表中(且加到最后);
# services.append('firewalld')
# print(services)
# 3. extend拉伸: 追加多个元素到列表中(默认加到最后)
# services.extend(['hello', 'firewalld', 'mysql'])
# print(services)
# 4. insert:插入
services.insert(2, 'firewalld')(代表你想要加入的位置,firewalld代表加入的元素)
print(services)
2.列表元素的删除
services = ['ftp', 'ssh', 'http', 'ftp']
# 1. pop
- 不传值:(默认删除列表中的最后一个元素)
services.pop()
print(services)
-传值:
services.pop(1) (1代表索引值)
print(services)
-列表为空:再用删除操作时会报错
services = []
services.pop()
print(services)
#2.remove(括号里面要跟具体的元素,不能用索引值,否则会报错),(如果列表中有两个相同的元素,默认删除左边的)
services = ['ftp', 'ssh', 'http', 'ftp']
# services.remove('ftp')
# print(services)
-删除列表不存在的元素会报错
# services.remove('https')
# print(services)
3. clear( 清空列表里面的所有元素)
# services.clear()
# print(services)
4.del :
del +列表名(删除列表)
(删除列表指定位置元素的)
# print("删除列表第一个索引对应的值:", end=" ")
# del services[1]
# print(services)
print("删除除前两个元素之外的其他元素:", end= ' ')
del services[2:]
print(services)
3.列表元素的修改
services = ['ftp', 'ssh', 'http', 'ftp']
#1.通过索引, 重新赋值
# services[0] = 'mysql'
# print(services)
#2.通过slice(切片)
services[:2] = ['mysql', 'firewalld']
print(services)
4.列表的查看
#1.count 查看出现次数
services = ['ftp', 'ssh', 'http', 'ftp']
print(services.count('ftp'))
#2.index 查看指定元素的索引值(也可与以指定范围查看)
services = ['ftp', 'ssh', 'http', 'ftp']
print(services.index('ssh'))
print(services.index('ftp', 2, 8))
# 3.sort 排序查看, 按照ASCII码进行排序的;
services = ['ftp', 'ssh', 'http', 'ftp']
print(services.sort())
print(services)
phones = ['alice', 'bob', 'harry', 'Borry'] phones.sort() print(phones)
#如何对字符串排序不区分大小写,按照字母顺序进行排序
这里需要先将其统一转化为大写或小写
phones = ['alice', 'bob', 'harry', 'Borry'] phones.sort(key=str.lower) print(phones)
phones = ['alice', 'bob', 'harry', 'Borry']
phones.sort(key=str.upper)
print(phones)
5.列表的复制
li = [1,4,2,5] li1 = li.copy() print(id(li)) print(id(li1)) print(li) print(li1)
6.列表的反转
li = [1,4,2,5] li1=li.reverse() print(li)
7.将列表元素打乱顺序
import random
li = list(range(10))print(li)
# 将原有的列表顺序打乱, 间接实现随机生成整形数
random.shuffle(li)
print(li)
练习:
1.# # 随机生成10个整形数, 范围为1~10之间,并排序。
numbers = []
for i in range(10):
num = random.randint(1,10)
numbers.append(num)
print(numbers)
numbers.sort()
print(numbers)
2.用户管理系统
1). 系统里面有多个用户, 用户信息目前保存在列表里面;
users = ['root', 'westos']
passwds = ['123', '456']
2). 用户登陆(判断用户登陆是否成功):
1). 判断用户是否存在?(inuser in users)
2). 如果存在:
1). 判断用户密码是否正确?
(先找出用户对应的索引值, 根据passwds[索引值拿出该用户的密码)
如果正确: 登陆成功, 退出循环;
如果密码不正确, 重新登陆, 总共有三次登陆机会
3). 如果不存在:
重新登陆, 总共有三次登陆机会
users = ['root', 'westos']
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.后台管理员管理前台会员信息
1. 后台管理员只有一个用户: admin, 密码: admin
# 2. 当管理员登陆成功后, 可以管理前台会员信息.
# 3. 会员信息管理包含:
# 添加会员信息
1). 判断用户是否存在?
2). 如果存在, 报错;
3). 如果不存在,添加用户名和密码分别到列表中;
# 删除会员信息
1). 判断用户名是否存在
2). 如果存在,删除;
3). 如果不存在, 报错;
# 查看会员信息
# 退出
print("管理员登陆".center(50, '*'))
inuser = input('UserName:')
inpasswd = input('Password:')
# 所有会员用户名
users = ['root', 'westos']
# 所有会员的密码
passwds = ['123', '345']if inuser == 'admin' and inpasswd == 'admin':
print("管理员登陆成功!")
print("会员管理".center(50, '*'))
while True:
print("""
操作目录
1 - 添加会员信息
2 - 删除会员信息
3 - 查看会员信息
4 - 退出
""")
choice = input("请选择你的操作:")if choice == '1':
print("添加会员信息".center(50, '*'))
addUser = input("添加会员名:")
if addUser in users:
print("用户%s已经存在" %(addUser))
else:
addPasswd = input("密码:")
# 需要把用户和密码添加到列表;
users.append(addUser)
passwds.append(addPasswd)
print("添加用户%s成功" %(addUser))
elif choice == '2':
print("删除会员信息".center(50, '*'))
delUser = input("删除会员名:")
delIndex = users.index(delUser)
users.remove(delUser)
passwds.pop(delIndex)
print("删除会员%s成功!" %(delUser))elif choice == '3':
print("查看会员信息".center(50, '*'))
print("\t用户名\t密码")
userCount = len(users) # 2
# 0,1
for i in range(userCount):
print('\t%s\t%s' %(users[i], passwds[i]))
elif choice == '4':
exit()
else:
print("请输入正确的选择")
else:
print("管理员登陆失败!")