【九】-Python 集合&函数

set

# 不重复特点:
list1 = [3,5,8,9,1,8,4,2,5,8,9]

# 声明集合: set

s1 = set()  # 创建空集合,只能使用set()

s2 = {1,3,7}   # 字典: {key:value,key:value,....}  集合 {元素1,元素2,元素3,...}

print(type(s1)) #<class 'set'>

print(type(s2)) #<class 'set'>


#应用: 如果将一个列表快速去重 set()
s3 = set(list1)
print(s3)   # {1, 2, 3, 4, 5, 8, 9}


# 增删改查:
# 1. 增加   s1 = set()
s1.add('hello')
s1.add('小猪佩奇')
s1.add('lucy')
print(s1)  #{'hello', '小猪佩奇', 'lucy'}
           #s1 = set()  # 创建空集合,只能使用set() 

# add()  添加一个元素
# update()  可以添加多个元素,  

t1 = ('XKS','HE')
s1.update(t1)  

print(s1) #{'小猪佩奇', 'lucy', 'XKS', 'hello', 'HE'}


s1.add(t1)
print(s1) #{('XKS', 'HE'), '小猪佩奇', 'lucy', 'XKS', 'hello', 'HE'}


#2. 删除  remove 如果元素存在则删除,不存在则报错keyError    
#         pop  随机删除(一般删除第一个元素)  clear。。。
#         dicard()  类似remove()   在移除不存的元素的时候不会报错。
s1.remove('XKS')

print(s1) #{('XKS', 'HE'), 'hello', 'HE', 'lucy', '小猪佩奇'}

s1.pop() 
print(s1) #{'小猪佩奇', ('XKS', 'HE'), 'HE', 'lucy'}

s1.pop()
print(s1) #{'lucy', ('XKS', 'HE'), '小猪佩奇'}


s1.clear()  # 清空
print(s1) #set()


'''
  1. 产生了10个1~20的随机数,去除里面的重复项
  2. 键盘输入一个元素,将此元素从不重复的集合中删除

'''

difference()  intersection()   union() symmetric_difference()

'''
	已知两个列表:
	l1 = [5,1,2,9,0,3]
	l2 = [7,2,5,7,9]

	找出两个列表的不同元素

	找出两个列表的共同元素

'''
l1 = [5,1,2,9,0,3]
l2 = [7,2,5,7,9]

s1 = set(l1)
s2 = set(l2)

# 对称差集 
result = (s1 | s2) - (s1 & s2)
print(result) #{0, 1, 3, 7}

result = s1 ^ s2  # 两个列表中不一样元素  symmetric_difference()
print(result) #{0, 1, 3, 7}

'''
 difference_update()

	 s1 = s1.difference(s2)
	 print(s1)
     相同
	 s1.difference_update(s2)

 intersection_update()  交集并赋值
 union_update()   并集并赋值
 symmetric_difference_update()  对称差集并赋值

'''

s1.difference_update(s2)
print(s1) # 0 1 3

'''
 关键字: set
 作用: 去重
 

 符号: - & | ^
 
 内置函数:
  增加: add()  update()
  删除: remove() discard()  pop()  clear()
  运算: difference()  intersection()  union()  symmetric_difference()

'''

 可变 不可变

# 可变 和 不可变
# 不可变: 对象所指向的内存中的值是不可以改变
# 不可变的类型: int  str  float  元组tuple   frozenset()
num = 10

s1 ='abc'
print(id(s1)) #1473287240536

s1='abcd'
print(id(s1)) #1473288167240

t1 =(3,5,6)
print(id(t1)) #1473288096936

t1 =(3,5)
print(id(t1)) #1473288193608

# 可变的:对象所指向的内存中的值是可以改变 
# 可变类型: 字典dict  列表list  集合set   扩展: frozenset() 不可变
list1 = [1,2,3,4,5]
print(list1,id(list1)) #[1, 2, 3, 4, 5] 1477921850056

list1.pop()
print(list1,id(list1)) #[1, 2, 3, 4] 1477921850056

dict1 ={1:'aa',2:'bb'}
print(dict1,id(dict1)) #{1: 'aa', 2: 'bb'} 1477916711888

dict1.pop(1)
print(dict1,id(dict1)) #{2: 'bb'} 1477916711888

'''
  集合 是可变的还是不可变的?

'''
set1 = {3,5,6,8}
print(set1,id(set1)) #{8, 3, 5, 6} 2036384350504

set1.discard(5)
print(set1,id(set1)) #{8, 3, 6} 2036384350504

fset = frozenset(set1)  # {3,6,8}
print(fset,id(fset)) #frozenset({8, 3, 6}) 2036384979656

fset = frozenset({3,6})
print(fset,id(fset)) #frozenset({3, 6}) 2036384980328

类型转换总结

# 类型转换
# str()  int()  list()  dict()  set()  tuple()
# str ---》 int,list,set,tuple

s='8'
i = int(s)

s='abc'
l = list(s)
print(l) #  ['a','b','c']

s= set(s)
print(s) #{'a', 'b', 'c'}

t = tuple(s)
print(t) #('a', 'b', 'c')

# 反过来: str 《--- int,list,set,tuple,dict,float

i= 8
s = str(i)
l = str(['a','b','c'])
print(l,type(l)) # ['a', 'b', 'c'] <class 'str'>
# list ---> set() ,tuple() ,可以转成字典 [(key,value),(key,value),(...)]
# tuple ---> list, set ---->list   dict---->list
tuple1 = (1,2,3,4)
print(list(tuple1)) #[1, 2, 3, 4]

set1 = {1,2,3,4,5}
print(list(set1)) #[1, 2, 3, 4, 5]

for i in set1:
	print(i) #1 2 3 4 5

dict1 = {1:'a',2:'b'}
print(list(dict1))  # [1, 2] #只是将key保存在list中 

项目和函数

项目:
代码----》组织结构:项目  包含很多代码

项目:
  |--包 p1
     |-- test1.py
     |-- test2.py
     |-- test3.py

  |--包 p2
     |-- test1.py
     |-- test2.py
     |-- test3.py

函数:
if 条件1: 添加
    判断名字是否存在
    不存在  添加
    存在    提示已存在

elif 条件2: 修改
     判断名字是否存在
       不存在 提示不存在
       存在   允许修改电话号码

elif 条件3: 删除
     判断名字是否存在
       不存在 提示不存在
       存在   删除用户

作用:
python 就出现了函数。
将重复的代码,封装到函数,只要使用直接找函数。
函数可以增强代码的模块化和提高代码的重复利用率。

定义函数:

格式:
def 函数名([参数,参数...]):
    函数体 (重复的代码)

注意:1. 必须使用关键字def  2. 函数体注意缩进  3.函数名() 绑定
- 函数名命名规则同变量名,要满足标识符命名规则
- 不能和系统函数重名,否则系统函数无法使用
- 函数定义分两部分函数头和函数体
- 函数体,就是实现功能的代码段,以:开头,必须缩进
- 函数名的命名风格:一般建议用下划线分隔的小写单词组成:say_hello

函数学习

# 定义函数: 随机数的产生
# 自动格式化: shift+ctrl+f (format)

import random

def generate_random():
    for i in range(10):
        ran = random.randint(1, 20)
        print(ran)

print(generate_random)  # 打印函数名
# <function generate_random at 0x0000000002071E18>

# 调用: 函数名()   找到函数并执行函数体的内容
print('------------1--')
generate_random()

print('------------2--')
generate_random()
# 函数:带参数的
'''
定义:
 def 函数名(参数,参数,..):
    函数体
调用:
    pass
'''
# 求随机数的函数,产生的个数????
# alt+enter  快速提醒/提示
import random

def generate_random(number):  # 形参:形式上参数   number=5
    for i in range(number):
        ran = random.randint(1, 20)
        print(ran)

# print(generate_random)

# 调用
generate_random(5)  # 实参:实际的参数 具体的值
generate_random(8)


# 求加法的函数
def add(a, b):  # 参数2个 形参
    result = a + b
    print("和:", result)

# 调用
add(2, 3)  # 实参 2个
add(1, 1)

'''
定义一个登陆函数,参数是:username,password
函数体:
判断参数传过来的username,password是否正确,如果正确则登陆成功,否则打印登陆失败

'''
# 函数的定义
def login(username, password):
    # 相当于数据库注册的用户名和密码
    uname = 'admin123'
    pwd = '112233'

    for i in range(3):
        if username == uname and password == pwd:
            print('登陆成功!')
            break
        else:
            print('登陆失败!')
            username = input('输入用户名:')
            password = input('输入密码:')
    else:
        print('账户锁定!')

# 调用:
username = input('输入用户名:')
password = input('输入密码:')

login(username, password)

  isinstance(变量,类型关键字)

# 找出列表的最大值
# 自己封装一个求最大值函数
def max(iterable):
    max = iterable[0]
    for i in iterable:
        if i > max:
            max = i
    print('最大值是:', max)

# 调用: 测试是否能找出最大值
list1 = [4, 1, 4, 3, 8, 9]
max(list1) #9

tuple1 = (3, 6, 1, 0, 5)
max(tuple1) #6

# sort     reverse   max   min
print(type(tuple1))  # <class 'tuple'> 查看是什么类型 
# 判断是不是什么类型: isinstance(变量,类型关键字)
print(isinstance(2, int))  # 返回值是False,True #True
print(isinstance(tuple1, tuple)) #True

if isinstance(tuple1, tuple): #True
    print('不能排序和翻转')

 

posted @ 2023-09-22 17:16  しみずよしだ  阅读(19)  评论(0)    收藏  举报