1.元组
元组不支持变量赋值(元组中的列表可以)
y= (1,) #单独定义元组的时候需要后面加逗号
print(type(y))
s = ([1,2,3],4)
s[0].append(4)
print(s)
元组的特性
Users = ('root','westos','redhat')
Passwds = ('123','456','789')
#索引,切片
print(Users[-1])
print(Users[::-1])
#
#重复
print(Users * 2)
#连接
print(Users + Passwds)
#成员操作附
print('redhat' in Users)
print('redhat' not in Users)
#for
for user,index in enumerate(Users):
print(user,index)
for user,passwd in zip(Users,Passwds):
print(user, ':' ,passwd)
#方法
t = (1,1.2,True,'westos')
print(t.count('westos')) #计数
print(t.index(1)) #下标
# #赋值
s = ('yueyue',23,'boy')
name,age,sex = s
print(name,age,sex)
# #排序
soces = (100,66,55,44)
socesli = list(soces)
socesli.sort()
t = tuple(socesli)
print(t)
求平均分:
soces = (100,66,55,44)
socesli = list(soces)
socesli.sort()
t = tuple(socesli)
# print(t)
#
#去掉最高最低求平均
maxsocre,*middlesocre,minsocre = t
print(maxsocre)
print(minsocre)
print(middlesocre)
print(sum(middlesocre) / len(middlesocre)) #平均分
2.集合
集合(元素不可重复,不支持索引,切片,重复,连接;支持成员操作符)
s = {1,2,2,3,3,5,4}
print(s)
print(type(s))
s1 = ()
print(type(s1))
s2 = set([])
print(type(s2)) #定义空集合
li = [1,2,2,5.5,5,5]
print(list(set(li))) # 集合去重
s = {1,2,3}
for i in s:
print(i,end='|')
for i,v in enumerate(s):
print(i,v)
#集合的添加
s = {6,7,8} # 一个一个添加
s.add(4)
print(s)
s.update({7,4,1})
print(s)
#删除
s.pop()
print(s)
s.remove(6)
print(s)
#交集 并集 差集
s1 = {1,2,3}
s2 = {2,3,4}
#并集
print('并集:',s1 | s2)
print('并集',s1.union(s2))
#交集
print('交集',s1 & s2)
print('交集', s1.intersection(s2))
#差集
print('差集',s2.difference(s1))
print('差集',s2-(s1&s2))
print('差集',s1.difference(s2))
print('差集',s1-(s1&s2))
s1 = {1,2,3}
s2 = {2,3,4}
#对等差分: 并集-交集
print('对等差分',s1.symmetric_difference(s2))
print('对等差分',s1^s2)
练习:
"""
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性
他先用计算机生成了N个1~1000之间的随机整数(N<=1000),N是用户输入的,
对于
其中重复的数字,只保留一个,把其余相同的数字去掉,不同的数对应着不>同的学生的学号,然后再把这些
数从小到大排序,按照排好的顺序去找同学做调查,请你协助明明完成“去重
”与排序工作
"""
import random
s =set([])
for i in range(int(input('N:'))):
num = random.randint(1,1000)
s.add(num)
print(len(s))
print(sorted(s))
3.字典
users = ['user1','user2']
passwds = ['123','456']
a = dict(zip(users,passwds))
print(a)
print(type(a))
student = {
'leilei':{
'id':'123',
'age':'18',
'sex':'boy'
},
'yueyue':{
'id':'234',
'age':'23',
'sex':'boy',
}
}
print(student['yueyue']['id'])
字典:不支持索引,切片 支持成员操作符,for
d = {
'1':'a',
'2':'b'
}
print('1' in d) #成员操作符
print('1' not in d)
for key in d:
print(key,d[key])
#字典的增加
services = {
'http':80,
'ftp':21,
'ssh':22
}
services['samba'] = 23
print(services)
#
services_update = {
'https':'443',
'firewalld':'8080',
'http':'8080' #如果存在,就覆盖
}
services.update(services_update)
print(services)
services.update(orcle=9090,nfs=23)
print(services)
services.setdefault('http',44) #如果key存在就不生效
print(services)
services.setdefault('idea',44)
print(services)
#删除
del services['http']
print(services)
#item =services.pop('https') #不存在报错
item =services.pop('http')
print(item)
print(services)
services.clear() # 清空
print(services)
services = {
'http':80,
'ftp':21,
'ssh':22
}
print(services.keys())
print(services.values())
print(services.items())
print(services.get('https')) # 不存在输出none
for k,v in services.items():
print('key:',k, 'value:',v)
练习:
"""
# 数字重复统计:
1). 随机生成1000个整数;
2). 数字的范围[20, 100],
3). 升序输出所有不同的数字及其每个数字重复的次数;
"""
import random
num1 = []
for item in range(1000):
num1.append(random.randint(20,1000))
sorted_nums = sorted(num1)
num_dict = {}
for num in sorted_nums:
if num in num_dict:
num_dict[num] += 1
else:
num_dict[num] =1
print(num_dict)
print(len(num_dict))
"""
栈的工作原理
入栈 append
出栈 pop
栈顶元素
栈的长度 len
栈是否为空 len == 0
"""
stack = []
info= ("""
1.入栈
2.出栈
3.栈顶元素
4.栈的长度
5.栈是否为空
6.退出
""")
while True:
print(info)
choice = input('选择:')
if choice == '1':
item = input('入栈元素:')
stack.append(item)
print('%s 入栈成功' % item)
elif choice == '2':
if not stack:
print('栈为空,不能出栈')
else:
item = stack.pop()
print('%s 元素出栈成功' %item)
elif choice == '3':
if len(stack) == 0:
print('栈为空')
else:
print('栈顶元素为%s' %(stack[-1]))
elif choice == '4':
print('栈的长度为%s' % (len(stack)))
elif choice == '5':
if len(stack) == 0:
print('栈为空')
else:
print('栈不为空')
elif choice == '6':
print('退出')
break
else:
print('请输入正确选择')
入栈
栈顶元素
出栈
栈的长度
栈是否为空退出