一.列表:
数组:存储同一种数据类型的集合 score=[12,13,14]
列表(被称为打了激素的数组):可以存储任意数据类型的集合(一个变量中可以存储多个信息)
#列表里面也可以嵌套列表(列表也是一种数据类型)
1.列表的特性:
索引
print service[0]
print service[-1]
切片
print service[::-1] #列表的翻转
print service[1:] #除了第一个元素的其他元素
print service[:-1]
重复
print service * 3
连接
print service + service1
成员操作符
print 'firewalld' in service
print 'firewaldd' not in service
#显示的是True和False
for循环遍历
print '显示服务'.center(50,'*')
for se in service
print se
列表中嵌套列表
索引
例如:
service = [['http',80],['ssh',22],['ftp',21]]
print service[0][1]
切片
例如:
print service[:][1]
print service[:-1][0]
print service[0][:-1]
2.列表的增加:
方法一:print service + ['firewalld']
方法二:service.append('firewalld')
print service
#append:追加,追加一个元素到列表的结尾
方法三:service.extend(['mysql','firewalld'])
#extend:拉伸,追加多个元素到列表的结尾
方法四:service.insert(1,'samab')
#insert:插入,在制定索引位置添加元素
3.列表的删除:
方法一:print service.pop()
print service.pop(0) #传递索引值
#如果pop()不传递值的时候,默认弹出最后一个元素
方法二:service.remove('ssh')
#remove:删除指定元素
方法三:del service
#del:是一个关键字,从内存中删除整个列表
4.列表的修改:
方法一:service[0] = 'mysql'
print service
#通过索引,重新赋值
方法二:service[:2] = ['XX','YY'] #把列表的前两个元素替换成XX和YY
print service
#通过切片
5.列表的查看:
方法一;print service.count('XX')
查看列表中XX元素出现的次数
方法二:print service.index('XX')
查看指定元素的索引值(最小)
6.列表的排序
方法一:service.sort()
print service
#按照Ascii码进行排序,先排大写字母再排小写字母
方法二:service.sort(reverse=True)
print service
##按照Ascii相反的顺序进行排序
方法三:service.sort(key=str.lower)或service.sort(key=str.upper)
print service
#排序时不区分大小写
方法四:random.shuffle(service)
print service
#将原有的列表顺序打乱
将生成的随机数排序;
import random
li = list(range(10))v
print li
练习:
1.用户管理系统
1).系统里有用户,用户有密码
users = ['root', 'westos']
passwds = ['123', '456']
2).用户登陆(判断登陆是否成功)
(1)判断用户是否存在
(2)如果存在:
判断用户密码是否正确:先找出用户对应索引,
然后根据passwds【索引值】
如果正确:登陆成功,退出
如果不正确:重新登陆,(机会只有三次)
(3)如果不存在:
重新登陆(机会只有三次)
users = ['root', 'westos']
passwds = ['123', '456']for i in range(3):
user = raw_input("用户名:")
passwd = raw_input("密码:")
i += 1
if user in users:
index1 = users.index(user) # 找到用户对应索引值
index2 = passwds[index1]
if index2 == passwd:
print '登陆成功'
break
else:
print '密码错误,你还有%d次机会' % (3 - i)
else:
print '没有该用户,你还有%d次机会' % (3 - i)
else:
print '请稍后再试'
2.后台管理前台会员信息
1).后台管理员只有一个用户:admin 密码:admin
2).当管理员登陆成功后,才可以管理用户信息
3).管理用户信息包括:
添加用户信息
删除用户信息
查看用户信息
退出
print '管理员登陆'.center(50, '*')
inuser = raw_input('UserName:')
inpasswd = raw_input('Password:')# 现存用户名和密码
users = ['root', 'westos']
passwds = ['123', '456']if inuser == 'admin' and inpasswd == 'admin':
print '管理员登陆成功'
print '用户信息管理'.center(50, '*') while True:
print """
1 -添加用户信息
2 -删除用户信息
3 -查看用户信息
4 -退出
"""
choice = raw_input('请选择:') if choice == '1':
print '添加用户信息'.center(50, '*')
add_user = raw_input('添加用户:')
if add_user in users:
print '用户%s已经存在' % add_user
else:
add_passwd = raw_input('请输入密码:')
# 把用户名和密码添加到列表中
users.append(add_user)
passwds.append(add_passwd)
print '添加用户%s成功' % add_user elif choice == '2':
print '删除用户信息'.center(50, '*')
del_user = raw_input('删除用户:')
if del_user in users:
index = users.index(del_user)
users.remove(del_user)
passwds.pop(index)
print '删除用户%s成功' % del_user elif choice == '3':
print '查看用户信息'.center(50, '*')
print '\t用户名\t密码'
i = 0
length = len(users)
while i < length:
print '\t%s\t%s' % (users[i], passwds[i])
i += 1
elif choice == '4':
print '谢谢使用!'
exit() else:
print '请输入正确选项'else:
print '管理员登陆失败!'
二.元组(tuple,带了紧箍咒的列表):
元组本身是不可变数据类型,没有增删改查,元组内可以存储任意数据类型。
t = (1,2.0,'star')
##元组内包含可变数据类型时可以间接修改元组的内容
##组中只有一个元素时,后面一定要加逗号,否则数据类型不确定
1.元组的特性:
索引:
print t[0]
peint t[-1]
切片:
print t[:-1]
print t[::-1]
重复:
print t * 次数
连接:
print t + ('s1','s2')
成员操作符:
print 's1' in t
2.元组的应用场景:
变量交换数值:
b,a = a,b
#先把(a,b)封装成了一个元组(1,2)
例如:
打印变量值:
例如:
元组的赋值:
有多少个元素,就用多少个变量接收
例如:
元组的排序:
t= sorted(元组名)
例如:
三.集合(set):
集合里面的元素是不可重复的
s = {1,2,3,4,5}
print s,type(s)
1.定义一个空集合:
s = set([])
2.集合的应用:
给列表去重:
l = [数字,数字]
print list(set(l))
3.集合的特性:
不支持索引,切片和重复
只支持成员操作符和for循环
成员操作符:print l in s
for循环:for i in s:
print i
4.集合的常用方法:
增加:
s.add(新元素)
增加多个元素:
s.update({元素一,元素二})
删除:
s.pop()
删除指定元素:
s.remove(指定元素)
交集并集和差集:
例如:
s1={1,2,3}
s2={2,3,4}
print '并集:',s1.union(s2)
print '并集:',s1 | s2
print '交集:',s1.intersection(s2)
print '交集:',s1 & s2
print '差集:',s1.difference(s2) #可以理解为s1中有哪些s2中没有的元素
print '差集:',s1-s2
print '对等差分:',s1.symmetric_difference(s2)
print '对等差分:',s1^s2
子集和超集:
子集:print s1.issubset(s2)
超集:print s1.issuperset(s2)
#超集:s1中的每一个元素都在s2中,且s2中可能包含s1中没有的元素,则s2是s1的一个超集
不相交集:
print s1.isdisjoint(s2)
四.字典:
字典是一个无序的数据集合,用print输出字典的时候,通常输出顺序和定义顺序不同
方法一:
m = {
'name':'sun',
'age':18,
'height':180
}
##key:value
方法二:
s = {
'name':['sun','bo','ya'],
'age':['18','13','20']
}
方法三:
d = dict(a=1,b=2)
1.字典的特性:
成员操作符:
##默认判断key值是否存在
print 'a' in d
print '1' in d
for循环:
##默认循环遍历字典的key值
方法一:for k,v in d.items():
print k,'-->',v
方法二:for k in d:
print k,'-->',d[k]
2.字典的增加或更改key-value对:
增加或更改单个:d['key'] = value
增加或更改多个:d.update({'key1':value1,'key2':value2})
增加或更改单个d.setdefault('key',value)
##key存在时做更改,key不存在时做增加
3.字典的删除:
方法一:
d.pop('key')
#弹出指定key-value值
方法二:
d.popitem()
#弹出第一个
方法三:
del d['key']
#删除指定key-value值
4.字典的查看:
查看所有key值:print d.keys()
查看所有value值:print d.values()
查看所有key-value值:print d.items()
5.查看:
print d.get('key')
#方法获取指定key对应的value值,如果key值存在则返回对应的value值,如果不存在,默认返回none,如果需要返回指定值,传回即可print d.get('key','返回的语句')