Python之集合、函数
一 集合1 集合定义:
1 如果花括号为空,则是字典类型
2 定义一个空集合,使用set 加小括号
使用B方式定义集合时,集合内部的数必须是可迭代对象,数值类型的不可以
2 集合的简单应用
实现对集合内元素的去重操作,此操作可应用于对列表的去重
1 使用集合对列表进行去重操作
2 使用字典的键不重复性对列表进行去重
3集合的增删改查
1 集合的增:
Aadd 实现对非可变类型数据的添加操作(除列表,字典)
B update实现对可迭代对象的加入操作(数值类型则不能加入其中)
2 删
A pop()支持对集合的无序删除操作
B remove 支持对集合的指定元素的删除工作,若不存在,则报错
C discard删除集合中指定元素,如果不存在,则无反应
D clear 清空集合
例题应用:
要求输入一个数,使其成为1-1000之间产生随机数的个数的总和个数,并对这些数进行排序(有小到大)
1
# cat a.py
#!/usr/bin/env python
#coding=utf-8
import random #导入该模块,用于生成1到1000的随机数
l1=[]
s=set()
N=input("请输入数字总和N:")
for i in range(N):#进行循环的总数
N1=random.randint(1,1000) # 生成1-1000内的随机数N个
s.add(N1)
l1=list(s)
l1.sort() #使用列表的内置方法进行排序
print l1
2
# cat a.py
#!/usr/bin/env python
#coding=utf-8
import random
l1=[]
s=set()
N=input("请输入数字总和N:")
for i in range(N):
N1=random.randint(1,1000)
s.add(N1)
l1=list(s)
print sorted(l1)使用内置函数进行排序
3查(关系测试)
1 交集 (输出两个集合中共有的元素)
2 并集(输出列个集合中所有存在的元素)
3 差集(输出第一个集合中与第二个集合不同的元素)
4 对等差分 (输出两个集合中各不存在但对方存在的元素)
集合关系判断(子集,父集)
二 总结:
1 可变数据类型:列表,字典,集合
2 不可变数据类型:数值类型,元祖,字符串
可变数据类型实现某个功能,直接改变可变的数据
不可变数据类型实现某些功能,需要将结果赋值给另一个变量
可迭代数据类型(能实现for 循环):strlisttupledict set
不可迭代数据类型:数值类型
是否支持索引,切片,链接,重复特性
有序的数据类型:str list tuple
无序的数据类型:dictset
三函数
1 无参数的函数
函数的定义:
def 函数名():
函数体
函数的调用:
函数名()
定义函数时,函数不执行,调用函数时,函数才执行
2 有参数的函数
1 形参
在def 函数定义时使用的参数称为形式参数,不具备实际的意义,
def a1(x,y):
....: print x+y
此时的x,y被称为形式参数
形参的分类
A 必须参数
def a1(x,y):
....: print x+y
B 默认参数
In : def a4(x,y=1): #y=1 用于当只传入一个参数时,此y=1则会发生作用,若传入两个参数,则失效
....: print x,y
....:
In : a4(1)
1 1
In : a4(1,2)
1 2
C 可变参数
In : def a2(*x): 可以同时传输多个参数,其产生的结果是一个元祖
....: print x
....:
In : a2(1,2,3,4,5,6)
(1, 2, 3, 4, 5, 6)
a2()
(,)
D 关键字参数:
In : def a3(**x):
....: print x #其返回值是一个字典
....:
In : a3(a=1,b=2,c=3)
{'a': 1, 'c': 3, 'b': 2}
函数定义时,若有多种类型的参数需要定义,则必须要遵循:必须参数--默认参数--可变参数--关键字参数
2实参
在调用函数时传入函数体内部的参数称为实参,有实际的效果的参数
In : a1(1,2)
3
In : a=1;b=3
In : a1(a,b)
4
此时的1,2 和 a,b 都是实参
应用,用于数之和
In : def a2(*x):
....: sum=0
....: for i in x:
....: sum+=i
....: print sum
....:
In : a2(1,2,3,4,5,6,7,8,9)
45
3返回值
函数中没有return时,默认返回None
1 返回多个值
#!/usr/bin/env python
#coding=utf-8
def a1(*args):
'''
返回最大值和最小值
:param args: 要求输入多个数作比较
:return: 返回最大值和最小值
'''
returnmax(args) ,min(args)
print a1(1,2,3,4,10,20,100)
4 函数的变量作用域
global 关键字必须要先声明,再使用
#!/usr/bin/env python
#coding=utf-8
x=1
def a1(x):
x=2
print x
print x其结果是x=1
a1(x)其结果是x=2 ,因为在调用函数内部时,此x=2是局部变量,其优先级高于X=1
#!/usr/bin/env python
#coding=utf-8
x=1
def a1():
global x #声明变量为全局变量,并赋值
x=2
print x
a1() 结果为2
print x 结果为2
名称空间:一个变量所能够生效的作用域
本地作用域:只能在函数内部使用
模块定义:全局作用域
函数定义:本地作用域
变量名解析:LEGB 原则:
变量名引用分三个作用域进行: 首先是本地。之后是函数内,接着是全局,最后是内置
Python 创建、改变或查找变量名都是在名称空间中进行
在代码中变量名被赋值的位置决定了其能被访问到的返回
函数定义了本地作用域,而模块定义了全局作用域
每个模块都是一个全局作用域,因此,全局作用域的范围仅限于单个程序文件
每次对函数的调用都会创建一个人新的本地作用域,赋值的变量除非声明为全局变量,否则均为本地变量
所有的变量都可以归纳为本地、全局或内置的(由_builtin_模块所提供的)
页:
[1]