拷贝,集合,函数,enumerate,内置函数
1.拷贝
字符串和数字、赋值 id一样
import copy #提供拷贝功能
copy.copy() #原来的和现在的一起修改,不用修改时用浅copy,节省内存,复制最外层
copy.deepcopy() #只修改现在的,复制所有,除最内层
2.集合
1).无序且不重复的集合
2).访问速度快
3).天生解决重复问题
s=set() #创建空集合专用
s={,,,} s1=set(['alex','eric','tony']) #转换:可以是元组、列表、字符串 s1.add('alll') #增加元素,原集合
s1.update() #可增加多个元素 s2=s1.difference(['alex','eric'])#生成新的集合,删除相同元素,不改变原集合A-(AnB) print(s2)
s1.difference_update(['alex','eric']) #删除相同元素,修改原集合
s.discard() #移除指定元素 s2.pop() #.随机删除一个元素2.把元素赋值给ret,有返回值
print(s2)
s1.remove('alll') #移除指定的,
print(s1) old=set(old_dict.keys())
new=set(new_dict.keys())
updata_set=old.intersection(new) #取交集,并更新自己AnB
ret=old.isdisjoint(new) #有交集是False,没交集是True
old.issubset(new) #是否是子集
old.issuperset(new) #是否是父集
old.union(new) #取并集 deleat_set= old.symmetric_difference(updata_set) # 并-交,拿出所有不一样的 AuB-AnB add_set=new.symmetric_difference(updata_set) #并-交,
3.三元运算
用于简单的if语句
# r= if True else False # r=值1 if 条件 else 值2
# print(r)
4.函数的返回值
def mail(user):
ret=True
try:
n=m #失败
except Exception:
ret=user
return ret #成功返回123,失败返回456 #返回值,结束子程序
ret=mail('xxx')
print(ret)
返回给mail()
4.1两个参数
def show(rr,yy=): #默认参数yy= #默认参数必须放在最后
print(rr,yy)
show(,) ##指定参数show(yy=,)
4.2动态参数
#动态参数 *arg 多个参数,默认输出是元组
# **arg 多个参数,默认输出是字典 show(n1=,n2=) 传参数要有key value
# *arg,**arg show(,,,n1=,n2=)前几个放进元组,后几个放进字典1.一个星在前,两个星放后面2.执行时按顺序
# l=[,,] d={'n1':,'n2':'hh'} show(*l,**d)
#动态参数实现字符串格式化
'''
s1='{0} is {1}'
l=['kk','ll']
result=s1.format(*l)
'''
'''
s1='{name} is {acter}'
l={'name':'kk','ll':'hh'}
result=s1.format(**l)
'''
4.3函数传参数
#函数传参,传引用。java,c#在形参前加ref或out,不加相当于再创建一份值 def fun(args):
args.append(123) li=[11,22]
fun(li)
print(li)
5.练习
5.1集合
# 数据库中原有
old_dict = {
"#1":{ 'hostname':'c1', 'cpu_count': , 'mem_capicity': },
"#2":{ 'hostname':'c1', 'cpu_count': , 'mem_capicity': }
"#3":{ 'hostname':'c1', 'cpu_count': , 'mem_capicity': }
} # cmdb 新汇报的数据
new_dict = {
"#1":{ 'hostname':'c1', 'cpu_count': , 'mem_capicity': },
"#3":{ 'hostname':'c1', 'cpu_count': , 'mem_capicity': }
"#4":{ 'hostname':'c2', 'cpu_count': , 'mem_capicity': }
}
m=[]
n=[]
for i in old_dict:
m.append(i)
for i in new_dict:
n.append(i) old_set=set(m)
new_set=set(n)
#更新
updata_set=old_set.intersection(new_dict) #取交集
#删除
del_set=old_set.symmetric_difference(updata_set)
#新建
new=new_set.symmetric_difference(updata_set)
5.2简述普通参数、指定参数、默认参数、动态参数的区别
# 、简述普通参数、指定参数、默认参数、动态参数的区别
# 普通参数:分为形参和实参
# 指定参数 :在实参中指定参数的值
# 默认参数:在形参中定义参数的默认值
# 动态参数:可接收任意数量,任意类型的参数
'''
def func(*args):
print args # 执行方式一
func(,,,,) # 执行方式二
li = [,,,,,,]
func(*li)
'''
'''
def func(**kwargs):
print args # 执行方式一
func(name='wupeiqi',age=) # 执行方式二
li = {'name':'wupeiqi', age:, 'gender':'male'}
func(**li)
'''
'''
#动态参数 *arg 多个参数,默认输出是元组
# **arg 多个参数,默认输出是字典 show(n1=,n2=) 传参数要有key value
# *arg,**arg show(,,,n1=,n2=)前几个放进元组,后几个放进字典1.一个星在前,两个星放后面2.执行时按顺序
# l=[,,] d={'n1':,'n2':'hh'} show(*l,**d)
'''
5.3写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数
a='123ssdf *_'
digital=
alphabet=
space=
others=
for i in a:
if i.isdigit():
digital+=
elif i.isalpha():
alphabet+=
elif i.isspace():
space+=
else:
others+=
print('digital=%d,alphabet=%d,space=%d,others=%d'%(digital,alphabet,space,others))
5.4写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
def str_len():
a=raw_input('请输入字符串')
if len(a)>5:
print('长度大于5')
else:
print('长度不大于5')
def list_len():
a=raw_input('请输入列表')
if len(a)>5:
print('长度大于5')
else:
print('长度不大于5')
def tuple_len():
a=raw_input('请输入字符串')
if len(a)>5:
print('长度大于5')
else:
print('长度不大于5')
'''
5.5写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。
def a():
b=raw_input('请输入字符串或列表或元组:')
if all(b)==True:
print('无空内容')
else:
print('有空内容')
5.6写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
def a():
b=[1,2,3,4]
if len(b)>2:
c=b[:2]
return c
5.7写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
def a():
b=[1,2,3,4,5,6]
c=[]
i=1
while i<=len(b):
c.append(b[i])
i+=2
5.8写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
def dir_updata():
dic={"k1": "v1v1", "k2": [11,22,33,44],}
for i,j in dic.items():
if len(j)>2:
dic[i]=j[:2]
return dic print(dir_updata())
5.9写函数,利用递归获取斐波那契数列中的第 10 个数,并将该值返回给调用者。
def fun(k):
# while b[k]<30:
while k<9:
a=b[k]+b[k+1]
b.append(a)
fun(k+1)
return b
b=[0,1,]
print(fun(0))
print(b[9])
6.lambda 表达式
func=lambda a:a+1 #冒号前是参数,后面表达式,作为return值
ret=func(99)
print(ret)
7.字节和字符串的转换
b=bytes(a,encoding='utf-8') #字符串转成字节
# c=str(b,encoding='utf-8') #字节转字符串
#一般字符串操作形成新的内容,列表,字典一般对自身进行操作
'''
for i in '刘讲座':
zijie=bytes(i,encoding='utf-8') #1.转化为字节,并制定编码方式
print(zijie)
for j in zijie: #16进制字节经for循环会转化为10进制
print(j)
print(bin(j)) #bin 10进制转2进制
8.enumerate可把列表转字典
相当于给列表加一列元素
# new_dic=dic(enumerate(li,1))
9.内置函数(不需要导入模块)
9.1 abs()
#绝对值
9.2 all([1,2,3,4])
#所有值是真才是真#假:0 None、空字符串、空列表、空字典、空元组是否为真
#用bool查看是否为真
any() #一个为真就为真
9.3进制转换
bin()#二进制
hex()#10进制转16进制
oct()#10进制转8进制 #其他进制转10进制
i=int('0b11',base=2)
i=int('0o11',base=8)
i=int('0x11',base=16)
9.4 callable,是否可执行
f=lambda x:x+1
callable(f)==True#是否可执行
9.5
chr()#数字转ascii里的字符
ord()#ascii字符转数字
9.6 random随机数
import random
random.randint(1,99)#输出1到99的随机数
随机验证码:1.随机数2.chr
random.randrange(65,91) #大写字母
random.randrange(97,123) #小写字母
#产生验证码 import random temp=''
for i in range(6):
num=random.randrange(0,4) #每一位数字、小写、大写字母产生的概率(不依赖位数i)
if num==3: #数字产生的概率
rad1=random.randrange(0,10)
temp+=str(rad1)
elif num==1: #小写字母产生的概率
rad2=random.randrange(97,123)
c1=chr(rad2)
temp+=c1
else: #大写字母产生的概率
rad2=random.randrange(65,91)
c1=chr(rad2)
temp+=c1
print(temp)
9.7 divmod
r=divmod(10/3)返回商和余数(3,1)
9.8 eval、exec
eval('6*8')#计算字符串等式 #有返回值
exec('for i in range(10):print(i)') 3执行代码无返回值
9.9 filter #过滤筛选,符合条件留下
f1=lambda x:x>22
ret=filter(f1,[11,22,33,44]) #参数:函数,可迭代的对象
for i in ret:
print(i)
9.10 map #筛选,得结果,对所有数操作并返回值
ret=map(lambda x:x+1 if x%2==0 else x,[11,22,33,44])
for i in ret:
print(i)
9.11 round、sum、sorted
# round()#四舍五入
# sum()#求和
# sorted()#数字和字符串不能混合比较,数字从小到大排,字母按ascii码排
9.12 判断对象的类型 isinstance
li=[1,2]
r=isinstance(li,list)
print(r)
拷贝,集合,函数,enumerate,内置函数的更多相关文章
- day 14 三元运算符,列表字典推导式,递归,匿名函数,内置函数(排序,映射,过滤,合并)
一.三元运算符 就是if.....else..... 语法糖 前提:if和else只有一条语句 #原始版 cmd=input('cmd') if cmd.isdigit(): print('1') e ...
- Python 入门基础12 --函数基础5 匿名函数、内置函数
今日内容: 1.三元表达式 2.列表.元组生成式 | 字典生成式 3.递归 4.匿名函数 5.内置函数 一.三元表达式 三元运算符:就是 if...else... 语法糖 前提:if 和 else # ...
- python基础之函数式编程、匿名函数、内置函数
一 函数式编程 不修改外部状态. 模仿数学里得函数进行编程. 用函数编程写出得代码相当精简. 可读性比较差. 例子: y=2*x+1 x=1 def test(x): return 2*x+1 tes ...
- day14(1)--递归、匿名函数、内置函数
一.递归 定义:本质上是回溯和递推 回溯:询问答案的过程 递推:推出答案的过程 前提: 回溯到一个有结果的值开始递推 回溯与递推的条件要有规律 方式: 直接递归:自己调用自己 间接递归:通过别人来调用 ...
- python之三元表达式、列表推导、生成器表达式、递归、匿名函数、内置函数
目录 一 三元表达式 二 列表推到 三 生成器表达式 四 递归 五 匿名函数 六 内置函数 一.三元表达式 def max(x,y): return x if x>y else y print( ...
- python协程函数、递归、匿名函数与内置函数使用、模块与包
目录: 协程函数(yield生成器用法二) 面向过程编程 递归 匿名函数与内置函数的使用 模块 包 常用标准模块之re(正则表达式) 一.协程函数(yield生成器用法二) 1.生成器的语句形式 a. ...
- day15(生成器send方法,递归,匿名函数,内置函数)
一,复习 ''' 1.带参装饰器 - 自定义 | wraps def wrap(info) def outer1(func): from functools import wraps @wraps(f ...
- python函数知识六 内置函数二、匿名函数与内置函数三(重要)
19.内置函数二 abs():绝对值 lst = [1,2,-3,1,2,-5] print([abs(i) for i in lst]) enumerate("可迭代对象",&q ...
- Python函数05/内置函数/闭包
Python函数05/内置函数/闭包 目录 Python函数05/内置函数/闭包 内容大纲 1.内置函数(二) 2.匿名函数及内置函数(重要) 3.闭包 4.今日总结 5.今日练习 内容大纲 1.内置 ...
- day03 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数
本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...
随机推荐
- BZOJ 4423: [AMPPZ2013]Bytehattan
Sol 对偶图+并查集. 思路非常好,将网格图转化成对偶图,在原图中删掉一条边,相当于在对偶图中连上一条边(其实就是网格的格点相互连边),每次加边用并查集维护就可以了. 哦对,还要注意边界就是网格外面 ...
- 一个IP多个https站点配置
在一台主机上放置一个https网站,究竟该怎么配置?对于IIS和Apache以及Nginx等不同的服务器,方法是不同的,网上有很多教程,在此就不再赘述了. 至于一台主机,如何配置多个https网站呢? ...
- PHP输出控制(Output Control)函数
ob_start 此函数将打开输出缓冲.当输出缓冲激活后,脚本将不会输出内容(除http标头外),相反需要输出的内容被存储在内部缓冲区中. 内部缓冲区的内容可以用 ob_get_contents() ...
- django操作数据库之查询F,Q操作 和 seach搜索功能
# F 使用查询条件的值 # # from django.db.models import F # models.Tb1.objects.update(num=F('num')+1) # Q 构建搜索 ...
- Java web中为什么要用Service接口和DAO接口?
面向接口:依赖倒转原理----使用service接口的原因是为了让表示层不依赖于业务层的具体实现,使用dao接口的原理也是如此,而且便于spring ioc容器,当修改dao层,时不需要修改servi ...
- Js 的 this 是什么
this指的是调用函数的那个对象,谁调用函数,谁就是this 更多: http://www.cnblogs.com/justany/archive/2012/11/01/the_keyword_thi ...
- Centos安装firefox/chrome
centos安装chrome:去官网下载chrome安装包(xxx.rpm),带软件安装工具的系统双击该xxx.rpm就能自动安装,或者sudo rpm -i xxx.rpm安装. centos卸载自 ...
- KVC 与 KVO 理解
KVC 与 KVO 是 Objective C 的关键概念,个人认为必须理解的东西,下面是实例讲解. Key-Value Coding (KVC) KVC,即是指 NSKeyValueCoding,一 ...
- TCP三次握手原理详解
TCP/IP协议不是TCP和IP这两个协议的合称,而是指因特网整个TCP/IP协议族. 从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层.网络层.传输层.应用层. TCP协议:即传输控制 ...
- 如何在maven中添加本地jar包
mvn install:install-file -DgroupId=mytest-DartifactId=test-Dversion=1.1 -Dpackaging=jar -Dfile=d:\te ...