Python中的元组、集合与字典

元组

元组:元组本身是不可变数据类型,没有增删改查
元组可以存储任意数据类型

1.元组的创建

t = (1,2,3,'westos',True)
print(t,type(t))

# 元组里包含可变可变数据类型,可以间接修改元组内容
t1 = ([1,2,3],4)
t1[0].append(5)
print(t1)

# 元组如果只有一个元素的时候
t2 = ('hello',)         #不加“,”时t2的类型为str型
print(t2,type(t2))

【1】

2.元组的特性

users = ('root','westos','redhat')
passwds = ('123','456','789')

# 索引 切片
print(users[0])
print(users[-1])
print(users[1:])
print(users[:2])
print(users[::-1])

# 重复
print(users[users * 3])		# 不能重复

# 连接
print(users + ('rhce','rhcsa'))

# 成员操作符
print('westos' in users)
print('westos' not in users)

# for循环
for user in users:
    print(user)

for index,user in enumerate(users):
    print(index,'-->',user)

for user,passwd in zip(users,passwds):
    print(user,':',passwd)

t = (1,1.2,True,'westos')
print(t.count('westos'))
print(t.index('westos'))

【2】

3.元组的应用

# a,b的值互换
a = 1
b = 2
print(a,b)
a,b = b,a
print(a,b)

#
scores = (100,89,45,78,65)
scoreli = list(scores)
#scoreli.sort()
#print(scoreli)
scores = sorted(scores)
print(scores)

minsore,*middlescore,maxscore = scores  # 先排序才可以使用此方法
print(minsore)
print(middlescore)
print(maxscore)
print('最终成绩为:%.2f' %(sum(middlescore)/len(middlescore)))

【3】

集合

1.集合的定义

"""
集合里面的元素是不可重复的
"""
s = {1,2,3,1,2,3,4,5}
print(s,type(s))

# 如何定义一个空集合
s2 = {}
print(s2,type(s2))    # 是字典,不是空集合
s3 = set([])
print(s3,type(s3))

# 集合应用
li = [1,2,3,1,2,3]    # 去重
print(list(set(li)))

【4】

2.集合的特性

"""
集合只支持成员操作符 for循环
"""

# 成员操作符号
s = {1,2,3}
print(1 in s)

# for循环
for i in s :
    print(i)

【5】

3.集合的常用方法

# 增加
s = {6,7,8,9}
s.add(1)
print(s)

s.update({5,3,2})   # 增加多个
print(s)

# 删除
s.pop()
print(s)  # 随即删除

s.remove(6)
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))
print('差集:',s2.difference(s1))

s3 = {1,2}
s4 = {1,2,3}
print(s3.issuperset(s4))  # s3不是s4的超集
print(s4.issuperset(s3))  # s4是s3的超集
print(s3.issubset(s4))    # s3是s4的子集
print(s3.isdisjoint(s4))  # 是否有一样的元素

【6】

4.集合的练习

华为机测题:
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性他先用计算机生成了N个1~1000之间的随机整数(N<=1000),N是用户输入的,对于其中重复的数字,只保留一个,把其余相同的数字去掉,不同的数对应着不同的学生的学号,然后再把这些数从小到大排序,按照排好的顺序去找同学做调查,请你协助明明完成
“去重”与排序工作

import random

s = set([])

for i in range(int(input('N: '))):
    s.add(random.randint(1,1000))

print(sorted(s))

[]

字典

1.字典的定义

"""
字典是一个无序的数据集合,通常输出顺序和定义顺序不一样
"""
users = ['user1','user2']
passwds = ['123','456']

print(zip(users,passwds))
print(list(zip(users,passwds)))
print(dict(zip(users,passwds)))

# 定义一个空字典
d = {}
print(type(d))

# 字典中value值可以是任意数据类型
s = {
    'westos':[100,99,88],
    'redhat':[50,60,70]
}
print(s,type(s))

# 工厂函数
d = dict()
print(d,type(d))

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

# 字典的嵌套
students = {
    '03113009':{
        'name':'wsp',
        'age':'18',
        'score':90
    },
    '12345678':{
        'name':'laoli',
        'age':'36',
        'score':80
    }
}
print(students)
print(students['12345678']['name'])  # 通过key值找到value值

# 所有的value值是0000的
print({}.fromkeys({'1','2'},'0000'))

[]

2.字典的特性

"""
不支持索引 切片 重复和连接(无意义,因为字典的key值唯一)
"""
d = dict(a=1,b=2)
print(d['a'])

# 成员操作符
print('a' in d)
print('a' not in d)

# for循环
for i in d:
    print(i)  # 获取到key值

for k in d:
    print(k,d[k])

for k,v in d.items():
    print(k,v)

【】

3.字典的增、删、改、查

# services = {
#     'http':80,
#     'ftp':21,
#     'mysql':3306
# }
#
# # 增加一个元素(如果key值存在,则更新对应的value值)
# services['ssh'] = 22
# print(services)
#
# services['http'] = 443
# print(services)
#
# # 增加多个key-value值
# services_backup = {
#         'samba':1234
# }
# services.update(services_backup)
# print(services)
#
# services.update(flask=9000,http=8000)
# print(services)
#
# # setdefalut添加key值,如果key存在,不做修改,如果不存在添加
#  services.setdefault('http',9090)
#  print(services)
#
#  services.setdefault('oracle',44575)
#  print(services)
#
# # 删除
# del services['http']
# print(services)
#
# # pop删除指定的key的key-value,如果key存在,删除并返回key对应的value,如果不存在,报错
# item = services.pop('mysql')
# print(item)
# print(services)
#
# # popitem 删除最后一个key-value值
# item = services.popitem()
# print(item)
# print(services)
#
# # 清空字典内容
# services.clear()
# print(services)
#
# # 查看
# # 查看字典的key值
# print(services.keys())
#
# # 查看字典的value值
# print(services.values())
#
# # 查看字典的key-value值对
# print(services.items())
#
# # 查看key的value值
# print(services['http'])
#
# # 查看key的value值,如果key不存在默认返回none,key不存在有default则返回default
# print(services.get('https',443))
#
# """
# get方法获取指定key值对应的value值
# 如果key值存在,返回对应的value值
# 如果key值不存在,返回对应的value值
# """
# print(services.get('http','key not exist'))

4.字典练习

"""
数字统计:
    1.随即生成1000个整数
    2.范围[20,100]
    3.升序输出所有不同的数字及每个数字重复的次数
"""
import random
s = []
d = {}
for i in range(1000):
    s.append(random.randint(20,100))
    s1 = sorted(s)
for j in s1:
    d[j] = s1.count(j)
print(d)

【】

"""
1.生成100个卡号
    卡号以6102009开头,后面3位一次是(001,002 ... 100)
2.生成关于银行卡号的字典,默认每个卡号的初始密码为‘redhat’
3.输出卡号和密码信息
卡号                  密码
6102009001           redhat
"""
s = []
d = {}
for i in range(1,101):
    s.append('6102009%.3d' %i)
#print(s)
for j in s:
    d[j] = 'redhat'
#print(d)
print('\t卡号\t\t\t密码')
for k in s:
    print('\t%s\t%s' %(k,d[k]))

[]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值