Python05 元组,集合与字典的应用

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('请输入正确选择')

入栈

栈顶元素

出栈

栈的长度

 栈是否为空退出

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值