python 中的数组,列表,元组,集合与字典

数组:存储同一种数据类型的集合 scores=[1,2,3,4]  一个变量存储多个信息
列表:(打了激素的数组):可以存储任意数据类型的集合
#列表里:可以存储不同的数据类型
li= [1,1.2,True,'hello']
print li
print type(li)


##列表里面也可以嵌套列表(列表:也是一种数据类型)
lii =[1,1.2,True,[1,2,35]]
print lii
print type(lii)


#列表的特性
# service =['http','ssh','ftp']
#索引
# print service[0]
# print service[-1]


切片
# print service [::-1]   #列表的翻转
# print service[1:]      #除了第一个元素之外的其他元素
# print service[:-1]      ##除了最后一个元素之外的其他元素


重复
# print service*2
连接
# service1=['mysql','firewalld']
# print service+service1
成员操作符
# print 'firewalld' in service
# print 'firewalld'in service1


for 循环遍历
# print '显示服务'.center(50,'*')
# for se in service:
#     print se, #显示不换行,去掉逗号换行


#列表里面嵌套列表
# service2=[['http',80],['ssh',22],['ftp',21]]
#索引
# print service2[0][1]     输出80
# print service2[-1][1]     输出21


#切片
# print service2[:][1]      【ssh,22】
# print service2[:-1][0]      【http,80】
# print service2[0][:-1]        http


案例1.
names=['fentiao','fendai','fensi','apple']
print 'i have ' + ','.join(names[:-1]) + 'and' + names[-1]


列表的增加
1.
service=['http','ssh','ftp']
print service + ['firewalld']
2.append:追加 追加一个元素到列表中
service.append('firewalld')
print service
3.extend: 拉伸追加多个元素到列表中
service.extend(['firewalld','samba'])
print service
4.insert:在指定索引位置插入元素
service.insert(1,'samba')
print service

#列表的删除
service=['http','ssh','ftp']
#如果pop()不传递值的时候,默认弹出最后一个元素,和堆栈一样的效果
 print  service.pop()
pop()也可以弹出索引值
 print service.pop(0)
remove:删除指定的元素
# service.remove('ssh')
# print service


del是个关键字,从内存中删除列表
print service
del service
print service

#列表的更改
service =['http','ssh','ftp']
#通过索引,重新赋值
service[0]='mysql'
print service
#通过切片赋值
print service[:2]
service[:2]=['samba','ladp']
print service

#列表的查看
service= ['http','ssh','ftp','ftp']
#查看列表中元素出现的次数
print service.count('ssh')
#查看指定元素的索引
print service.index('ssh')

#列表的排序
# service= ['http','ssh','ftp','ftp']
##按照Ascii码进行排序的升序
# service.sort()
# print service
# service.sort(reverse=True)  #倒叙
# print service


phones=['bob','harry','lily','Alice']
phones.sort()
对字符串排序不区分大小写
phones.sort(key=str.lower)         ctrl+点  查看源代码
phones.sort(key=str.upper)           ctrl+q  查看使用方法
print phones


###生成任意列表
import random
li=list(range(10))
print li


###将原有的列表顺序打乱
random.shuffle(li)
print li

案例2
users=['root','westos']
passwd=['123','456']
num=0
while num<3:
    inuser= raw_input('用户名')
    inpasswd=raw_input('密码')
    num+=1
    if inuser in users:
        index=users.index(inuser)
        passwd=passwd[index]
        if inpasswd==passwd:
            print '%s登陆成功'%inuser
            break
        else:
            print '%s登陆失败'%inuser
    else:
        print '用户不存在'
else:
    print '三次机会用完'

users=['root','westos']
passwds=['123','456']
name=raw_input('请输入用户名')
if name in users:
    for i in range(3):
        password=raw_input('请输入密码')
        if password in passwds:
            if users.index(name)==passwds.index(password):
                print '登陆成功'
            else:
                print '密码不正确,请重新的登陆'
                d=2-i
                print '你还有%d次机会'%d
        else:
            print '密码不再范围 '
else:
    print '请重新登陆,用户名不存在,还有三次机会'

案例3
print '管理员的登陆'.center(50,'*')
inuser =  raw_input('用户名')
inpasswd=raw_input('密码')
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,'*')
            adduser=raw_input('添加用户:')
            if adduser in users:
                print '用户%s已经存在'%adduser
            else:
                addpasswd=raw_input('密码')
                users.append(adduser)
                passwds.append(addpasswd)
                print '添加成功'
        elif choice=='2':
            print '删除用户信息'.center(50,'*')
            deluser=raw_input('删除用户:')
            if deluser in users:
                index=users.index(deluser)
                users.remove(deluser)
                passwds.remove(passwds[index])
                print '用户以删除成功'
            else:
                print '删除的用户不再列表里,请重新选择删除的用户'
        elif choice=='3':
            for se in users:
                print se,
            for see  in  passwds:
                print see,
        elif choice=='4':
            exit()
        else:
            print '请输入正确的选择'
else:
    print '管理员登陆失败'


print '管理员的登陆'.center(50,'*')
inuser =  raw_input('用户名')
inpasswd=raw_input('密码')
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,'*')
            adduser=raw_input('添加用户:')
            if adduser in users:
                print '用户%s已经存在'%adduser
            else:
                addpasswd=raw_input('密码')
                users.append(adduser)
                passwds.append(addpasswd)
                print '添加成功'
        elif choice=='2':
            print '删除用户信息'.center(50,'*')
            deluser=raw_input('删除用户:')
            if deluser in users:
                index=users.index(deluser)
                users.remove(deluser)
                passwds.remove(passwds[index])
                print '用户以删除成功'
            else:
                print '删除的用户不再列表里,请重新选择删除的用户'
        elif choice=='3':
            print '查看用户信息'.center(50,'*')
            print '\t用户名\t密码'
            count=len(users)
            for i in range (count):
                print '\t%s\t%s'%(users[i],passwds[i])
        elif choice=='4':
            exit()
        else:
            print '请输入正确的选择'
else:
    print '管理员登陆失败'

#元组的定义
#元组(tuple):带了紧箍咒的列表
#元组本身不可变数据类型,没有增删改查
#元组内可以存储任意数据类型
t=(1,2,3,'tar')
print t,type(t)
#元组里面包含可变数据类型,可以间接修改元组的内容
t1=([1,2,4],4)
t1[0].append(8)
print t1


#元祖如果只有一个元素时,记得加逗号,否则输出的类型不是元祖,是int型或是str型
t2=('hello',)
t3=('1',)
print type(t2),type(t3)

元组的特性
user=('westos','student','student')
元组的索引与切片
print user[0]
print user[-1]
print user[1:]
print user[:-1]
print user[::-1]


元祖的重复
print user*3
元祖的连接
print user + ('lili','harry')
元祖的成员操作符
print 'westos' in user
print 'westos' not  in user


#元组的应用场景
#变量交换数值
a=1
b=2
b,a=a,b  #先把(a,b)封装成了一个元组(1,2) b=(1,2)[0] a=(1,2)[1]
print a,b


#打印变量值
name='westos'
age=10
t=(name,age)
print 'name:%s,age:%d'%(name,age)
print 'name:%s,age:%d'%t


#元组的赋值:有多少个元素,就用多少个变量接收
m=('westos','10','100')
name,age,score=m
print name,age,score


#元组的排序
score=(100,89,78,45,99)
scoreli=list(score)  #把他转换为列表的形式,然后进行排序
scoreli.sort()
print scoreli
scores=sorted(score)   ##直接进行排序
print scores

#集合的定义
#集合里面的元素是不可重复的
s={1,3,3,2,4,4,2,5,6,7}
print s,type(s)
s1={1}
print s1,type(s1)
#如何定义一个空集合
s3=set([])
print s3,type(s3)


#集合的应用
li=[1,1,2,2,3,3]
print list(set(li))   ##将li去掉重复数值


#集合的特性
#集合只支持成员操作符,for循环
s={1,2,3}
print 1 in s
for i in s:
    print i,
for i,v in enumerate(s):
    print 'index:%s,value:%s'%(i,v)


集合的增加
s={6,7,1,2,3}
#增加
s.add(10)
s.add(9)
print s


#增加多个元素
s.update({4,5})
print s
#删除
s.pop()
print s
#删除指定元素
s.remove(2)
print s
#集合的交集并集与差集
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  '差集:',s2.difference(s1)#可以理解为s2中有那些s1中没有的元素
print '差集:',s2-s1


##对等差分:并集-交集
print '对等差分:',s1.symmetric_difference((s2))
print '对等差分:',s2^s1


s3={1,2}
s4={1,2,3}
print  s3.issubset(s4)  #s3是否为s4的子集
print  s3.issuperset(s4) #s3是否为s4的超集:s3中的每一个元素都在集合s4中,且s4中可能包含s3中没有的元素,则s3就是s4的一个超集
print s3.isdisjoint(s4) ##s3和s4不相交

案例4
import  random
s=set([])##设成集合的形式
for i  in range (int(raw_input('N'))):
    num= random.randint(1,1000)
    s.add(num)
print sorted(s)

#python中常用的内置方法
#枚举:返回索引值和对应的value值
for i,v  in enumerate('hello'):
    print str(i) + '--->'+ v
s1='azs'
s2='132'
for i in zip(s1,s2):
    print i
    print '-'.join(i)

字典是一个无序的数据集合,使用print输出字典的时候,通常输出的顺序和定义的顺序是不一致的
message = {
    'name': 'tom',
    'age': '18',
      'height':'1.80',
     'weight':75.5
}
print message
s={}
print type(s)
s={
    'fentiao':[100,90,80],
    'westos':[111,11,111]
  }
print s


d=dict()
print d,type(d)
d=dict(a=1,b=2)
print d,type(d)


#字典的特性
d=dict(a=1,b=2)
print d
#成员操作符(默认判断key值是否存在)
print 'a' in d
print 1 in d


#for循环(默认循环遍历字典的key值)
for i in d:
    print i

#字典的增加
d=dict(a=1,b=3)
print d
#添加或更改key-value对
d['g']=10
print d
d['a']=10  ##直接改value值
print d
update:如果key值存在,更新value值,如果key值不存在,添加key-value值
d.update({'a':4,'f':1})
print d
setdefault:如果key值已经存在,不做修改,如果key值不存在,添加key-value值
d.setdefault('a',10)
print d

#字典的删除
d=dict(a=1,b=3,c=2)
#pop:弹出指定的key-value值
d.pop('a')
print d
#弹出第一个值
d.popitem()
print d
#删除
del d['b']
print d

#字典的修改与查看
service={
    'http':80,
    'mysql':3306
}
#查看字典里面所有的keys值
print service.keys()
#查看字典里面所有的value值
print service.values()
#查看字典里面所有的key-value值
print service.items()


#遍历
for k,v in service.items():
    print k,'----->',v
for k in service:
    print k ,'---->',service[k]


#get方法获取指定key对应的value值 如果key值存在,返回对应的value值,如果key值不存在,默认返回NONE,如果需要指定返回值,传值即可
print service.get('https','key is not exist')

猜你喜欢

转载自blog.csdn.net/weixin_42709236/article/details/82350152