一.元组
1.元组的创建
"""
元组(tuple):元组本身是不可变数据类型,没有增删改查
元组内可以存储任意数据类型
"""
t = (1,2.3,True,'star')
print(t)
print(type(t))
#元组里面包含可变数据类型,可以间接修改元组的内容
t1 = ([1,2,3],4)
t1[0].append(4)
print(t1)
#元组如果只有一个元素的时候,后面一定要加逗号,否则数据类型不确定
t2 = ('hello',)
t3 = (1,)
print(type(t2))
print(type(t3))
2.元组的特性
allowUsers = ('root','westos','redhat')
allowPasswd = ('123','456','789')
#索引 切片
print(allowUsers[0])
print(allowUsers[-1])
print(allowUsers[1:])
print(allowUsers[2:])
print(allowUsers[:-1])
print(allowUsers[::-1])
#重复
print(allowUsers * 3)
#连接
print(allowUsers + ('linux','python'))
#成员操作符
print('westos' in allowUsers)
print('westos' not in allowUsers)
#for循环
for user in allowUsers:
print(user)
for index,user in enumerate(allowUsers):
print('第%d个白名单用户: %s' %(index+1,user))
#zip:两个元组的元素之间一一对应
for user,passwd in zip(allowUsers,allowPasswd):
print(user,':',passwd)
3.元组的常用方法
t = (1,2.3,True,'westos','westos')
print(t.count('westos'))
print(t.index(2.3)
4.元组的应用场景
#变量交换数值
# a = 1
# b = 2
# b,a = a,b
# #1.先把(a,b)封装成一个元组(1,2)
# #2.b,a=a,b ---> b,a=(1,2)
# #b = (1,2)[0] a = (1,2)[1]
# print(a)
# print(b)
#打印变量的值
# name = 'westos'
# age = 11
# t = (name,age)
# print('name:%s , age:%d' %(name,age))
# print('name:%s , age:%d' %t)
#元组的赋值,有多少个元素,就用多少个变量接收
# t = ('westos',11,100)
# name,age,score = t
# print(name,age,score)
score = (100,89,45,78,65)
# scoreLi = list(score)
# scoreLi.sort()
# print(scoreLi)
scores = sorted(score)
# print(scores)
minscore,*middlescore,maxscore = scores
print(minscore)
print(middlescore)
print(maxscore)
print('最终成绩为: %.2f' %(sum(middlescore) / len(middlescore)))
二.集合
1.集合的定义
#集合里面的元素是不可重复的
s = {1,2,3,1,2,3,4,5}
print(s)
print(type(s))
s1 = {1}
print(s1)
print(type(s1))
#如何定义一个空集合
# s2 = {}
# print(type(s2))
#
# s3 = set([])
# print(s3)
# print(type(s3))
#集合的应用
li = [1,2,3,1,2,3]
print(list(set(li)))
2.集合的特性
#集合只支持成员操作符 for循环
s = {1,2,3}
# print(s[0])
# print(s * 3)
# print(s + {4,5,6})
print(1 in s)
for i in s:
print(i,end='|')
for i,v in enumerate(s):
print('index: %s,value: %s' %(i,v))
3.集合的常用方法
#集合:无序的数据类型
#添加顺序和在集合中存储的顺序是不一定相同的
# s = {6,7,8,9}
#增加一个元素
# s.add(1)
# print(s)
#增加多个元素
# s.update({5,3,2})
# print(s)
#删除
# s.pop()
# print(s)
#删除指定元素
# s.remove(5)
# 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-(s1&s2)
print('差集:',s2.difference(s1)) #s2-(s1&s2)
#对等差分:并集-交集
print('对等差分:',s2.symmetric_difference(s1))
print('对等差分:',s1^s2)
s3 = {1,2}
s4 = {1,2,3}
#s3是否为s4的超集
#超集:如果s3中的每一个元素都在集合s4中,且s4中可能包含s3中没有的元素,
#那么s4就是s3的一个超集
print(s3.issuperset(s4))
print(s4.issuperset(s3))
#s3是否为s4的子集
print(s3.issubset(s4))
#两个集和是不是 不相交
print(s3.isdisjoint(s4))
#集合练习
用列表存储数据,用集合的特性去重
"""
# _*_coding:utf-8_*_
Name:03_去重.py
Date:1/16/19
Author:westos-dz
Desc:
"""
"""
生成N个0-20之间的随机整数,去重
"""
import random ##引入随机数
N = int(input('请输入要生成的数字个数:')) #输入生成随机数个数
list1 = [] ##定义一个空列表
for i in range(N): ##开始循环,循环次数为生成随机数个数
num = random.randint(0,1000) #生成随机数
list1.append(num) ##列表在末尾添加每次生成的随机数
a = set(list1) ##循环结束,将列表转换为集合,去重
print(sorted(a))