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

本文深入探讨了Python中的数据结构,包括数组、列表、元组、集合和字典。介绍了它们的特性和用法,如列表的增删改查、元组的不可变性、集合的唯一性以及字典的键值对操作。通过实例展示了这些数据结构在实际编程中的应用。
摘要由CSDN通过智能技术生成

数组:存储同一种数据类型的集合 scores=[1,2,3,4]  一个变量存储多个信息

列表:(打了激素的数组):可以存储任意数据类型的集合

#列表里:可以存储不同的数据类型

li= [1,1.2,True,'hello']

print li

print type(li)

0a4d26e7b80404a10956e8bb7a25c54d.png

##列表里面也可以嵌套列表(列表:也是一种数据类型)

lii =[1,1.2,True,[1,2,35]]

print lii

print type(lii)

4b47ee3e74f49d32028b344c175f1790.png

#列表的特性

# service =['http','ssh','ftp']

#索引

# print service[0]

# print service[-1]

ceec18b1eb78e9b7f5017e01fc3ee016.png

切片

# print service [::-1]   #列表的翻转

# print service[1:]      #除了第一个元素之外的其他元素

# print service[:-1]      ##除了最后一个元素之外的其他元素

4f7a9e0ee5991e2c9f014c7f994c2046.png

重复

# print service*2

连接

# service1=['mysql','firewalld']

# print service+service1

成员操作符

# print 'firewalld' in service

# print 'firewalld'in service1

a8c8ba58d60ba33988c306fe2d5a6417.png

for 循环遍历

# print '显示服务'.center(50,'*')

# for se in service:

#     print se, #显示不换行,去掉逗号换行

c4e6af70cd650d0a9d081d48d18325eb.png

#列表里面嵌套列表

# service2=[['http',80],['ssh',22],['ftp',21]]

#索引

# print service2[0][1]     输出80

# print service2[-1][1]     输出21

2b2c828b72bbd1928140067da79fc2ba.png

#切片

# print service2[:][1]      【ssh,22】

# print service2[:-1][0]      【http,80】

# print service2[0][:-1]        http

04dcb5ef6b258cff848298360c3f9aea.png

案例1.

names=['fentiao','fendai','fensi','apple']

print 'i have ' + ','.join(names[:-1]) + 'and' + names[-1]

fd3dd6fed7a73203769cdedb503e12db.png

列表的增加

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

6b3d6dfe7d2fddd56ea4e3fa19592a89.png

#列表的删除

service=['http','ssh','ftp']

#如果pop()不传递值的时候,默认弹出最后一个元素,和堆栈一样的效果

print  service.pop()

pop()也可以弹出索引值

print service.pop(0)

remove:删除指定的元素

# service.remove('ssh')

# print service

5bfd3fd58e3d91181f9b10a44fb342c1.png

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

ed21ef1c84f461a3c81c7d447ab81238.png

#列表的查看

service= ['http','ssh','ftp','ftp']

#查看列表中元素出现的次数

print service.count('ssh')

#查看指定元素的索引

print service.index('ssh')

eb055cc59c275549ea5960f0467b4c70.png

#列表的排序

# service= ['http','ssh','ftp','ftp']

##按照Ascii码进行排序的升序

# service.sort()

# print service

# service.sort(reverse=True)  #倒叙

# print service

2ab4f9ae35b1a79e0cb0d38f65acc49b.png

phones=['bob','harry','lily','Alice']

phones.sort()

对字符串排序不区分大小写

phones.sort(key=str.lower)         ctrl+点  查看源代码

phones.sort(key=str.upper)           ctrl+q  查看使用方法

print phones

a36404a63e26e0a173836edab41284b5.png

###生成任意列表

import random

li=list(range(10))

print li

e8843d3ebfd93cc0f7e4aaacbd7b69a7.png

###将原有的列表顺序打乱

random.shuffle(li)

print li

4009cc47f13aa922b29075c96d839c02.png

案例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 '三次机会用完'

968e6ddb39eb5ea2001bc6ef1ceee801.png

f441bbebb508378337971804dfed569d.png

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 '管理员登陆失败'

d239fd22bdd303da769c9f54cb12c189.png

9954fb4e7ad19f6ea8bbb7cee1958826.png

dababb73af3eef41c56eb061fb5fce16.png

85d9e84cc55998163cc69d80afae7ae1.png

#元组的定义

#元组(tuple):带了紧箍咒的列表

#元组本身不可变数据类型,没有增删改查

#元组内可以存储任意数据类型

t=(1,2,3,'tar')

print t,type(t)

#元组里面包含可变数据类型,可以间接修改元组的内容

t1=([1,2,4],4)

t1[0].append(8)

print t1

1d53f5999a7cee4c1cad3468f8fe3f2f.png

#元祖如果只有一个元素时,记得加逗号,否则输出的类型不是元祖,是int型或是str型

t2=('hello',)

t3=('1',)

print type(t2),type(t3)

6c8cb6b238c1008b2475dbd6451f4d33.png

元组的特性

user=('westos','student','student')

元组的索引与切片

print user[0]

print user[-1]

print user[1:]

print user[:-1]

print user[::-1]

0d21e2f5598e3d5911914d979a9c43ee.png

元祖的重复

print user*3

元祖的连接

print user + ('lili','harry')

元祖的成员操作符

print 'westos' in user

print 'westos' not  in user

95e0ae4fb92c4623d1a912603a56a7da.png

#元组的应用场景

#变量交换数值

a=1

b=2

b,a=a,b  #先把(a,b)封装成了一个元组(1,2) b=(1,2)[0] a=(1,2)[1]

print a,b

c62a9ff0fa709d48a8f93a096bf451a0.png

#打印变量值

name='westos'

age=10

t=(name,age)

print 'name:%s,age:%d'%(name,age)

print 'name:%s,age:%d'%t

d16abf9911d20108d4c1fa8defcbe3d9.png

#元组的赋值:有多少个元素,就用多少个变量接收

m=('westos','10','100')

name,age,score=m

print name,age,score

269597748d27e296b4b4a83f45c5029b.png

#元组的排序

score=(100,89,78,45,99)

scoreli=list(score)  #把他转换为列表的形式,然后进行排序

scoreli.sort()

print scoreli

scores=sorted(score)   ##直接进行排序

print scores

e5ea046e1d7ace68c4451037f110ce0b.png

#集合的定义

#集合里面的元素是不可重复的

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)

6c383c4cc8b0cdc83f051196199d8452.png

#集合的应用

li=[1,1,2,2,3,3]

print list(set(li))   ##将li去掉重复数值

ca7e1b326432ba14bcfa55fd8dc8621c.png

#集合的特性

#集合只支持成员操作符,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)

1371391712a1b031bfefe9df62f46a43.png

集合的增加

s={6,7,1,2,3}

#增加

s.add(10)

s.add(9)

print s

4e1ab18205dc16360fa20aa145eefbd9.png

#增加多个元素

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

95a032a126453bda057034fc3b2420bf.png

print '交集:',s1.intersection(s2)

print '交集:',s1 & s2

1679722fda3185a78c639cb3f4411943.png

print '差集:',s1.difference(s2)#可以理解为s1中有那些s2中没有的元素

print '差集:',s1-s2

print  '差集:',s2.difference(s1)#可以理解为s2中有那些s1中没有的元素

print '差集:',s2-s1

7e21920cf07bccd8b7a4912c0475abc1.png

##对等差分:并集-交集

print '对等差分:',s1.symmetric_difference((s2))

print '对等差分:',s2^s1

d1d09a55e5178c12482477dce1942dfd.png

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不相交

466c2c3139c0458e60c182ac6aaa0732.png

案例4

import  random

s=set([])##设成集合的形式

for i  in range (int(raw_input('N'))):

num= random.randint(1,1000)

s.add(num)

print sorted(s)

ac8b1a8e651dd15bdde4b8eddadd2c5d.png

#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)

1ac5847ddcdd6a061fb6bb0fa31b20a8.png

字典是一个无序的数据集合,使用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

b6da6e43155679fe125f832dcb9bff6b.png

d=dict()

print d,type(d)

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

print d,type(d)

3febc69c9cf642fd81780e72a584dbf9.png

#字典的特性

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

print d

#成员操作符(默认判断key值是否存在)

print 'a' in d

print 1 in d

75b46780b8565d59ec202ef02fbd61ad.png

#for循环(默认循环遍历字典的key值)

for i in d:

print i

0503fcd412439b692d016f32f40a83a9.png

#字典的增加

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

8f5a1699aaad2999c7d945c81e2c85fd.png

#字典的删除

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

3cbec93e96937ba9b1a51d7ded91d110.png

#字典的修改与查看

service={

'http':80,

'mysql':3306

}

#查看字典里面所有的keys值

print service.keys()

#查看字典里面所有的value值

print service.values()

#查看字典里面所有的key-value值

print service.items()

33d6326e37f89a0bc95015ef3a628f7e.png

#遍历

for k,v in service.items():

print k,'----->',v

for k in service:

print k ,'---->',service[k]

8914d8eba78e477ce3d59905189e733e.png

#get方法获取指定key对应的value值 如果key值存在,返回对应的value值,如果key值不存在,默认返回NONE,如果需要指定返回值,传值即可

print service.get('https','key is not exist')

a0ed563a25d0fceba5458402f12a5927.png

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值