博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
拷贝,集合,函数,enumerate,内置函数
阅读量:4574 次
发布时间:2019-06-08

本文共 6548 字,大约阅读时间需要 21 分钟。

1.拷贝

  字符串和数字、赋值 id一样

import copy   #提供拷贝功能copy.copy() #原来的和现在的一起修改,不用修改时用浅copy,节省内存,复制最外层copy.deepcopy() #只修改现在的,复制所有,除最内层

2.集合

1).无序且不重复的集合 2).访问速度快 3).天生解决重复问题
s=set()  #创建空集合专用s={
11,22,33,44}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() #1.随机删除一个元素2.把元素赋值给ret,有返回值print(s2)s1.remove('alll') #移除指定的,print(s1)old=set(old_dict.keys())new=set(new_dict.keys())updata_set=old.intersection(new) #取交集,并更新自己AnBret=old.isdisjoint(new) #有交集是False,没交集是Trueold.issubset(new) #是否是子集old.issuperset(new) #是否是父集old.union(new) #取并集deleat_set= old.symmetric_difference(updata_set) # 并-交,拿出所有不一样的 AuB-AnBadd_set=new.symmetric_difference(updata_set) #并-交,

3.三元运算

用于简单的if语句

# r=1 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=999):  #默认参数yy=999  #默认参数必须放在最后    print(rr,yy)show(11,22)  ##指定参数show(yy=11,22)

 

4.2动态参数

#动态参数  *arg 多个参数,默认输出是元组#        **arg 多个参数,默认输出是字典  show(n1=11,n2=22)   传参数要有key value# *arg,**arg      show(11,22,33,n1=11,n2=22)前几个放进元组,后几个放进字典1.一个星在前,两个星放后面2.执行时按顺序#                l=[11,22,33]  d={
'n1':88,'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': 2, 'mem_capicity': 80 },    "#2":{ 'hostname':'c1', 'cpu_count': 2, 'mem_capicity': 80 }    "#3":{ 'hostname':'c1', 'cpu_count': 2, 'mem_capicity': 80 }}# cmdb 新汇报的数据new_dict = {    "#1":{ 'hostname':'c1', 'cpu_count': 2, 'mem_capicity': 800},    "#3":{ 'hostname':'c1', 'cpu_count': 2, 'mem_capicity': 80 }    "#4":{ 'hostname':'c2', 'cpu_count': 2, 'mem_capicity': 80 }}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)
View Code

5.2简述普通参数、指定参数、默认参数、动态参数的区别

# 1、简述普通参数、指定参数、默认参数、动态参数的区别# 普通参数:分为形参和实参# 指定参数 :在实参中指定参数的值# 默认参数:在形参中定义参数的默认值# 动态参数:可接收任意数量,任意类型的参数'''def func(*args):    print args# 执行方式一func(11,33,4,4454,5)# 执行方式二li = [11,2,2,3,3,4,54]func(*li)''''''def func(**kwargs):    print args# 执行方式一func(name='wupeiqi',age=18)# 执行方式二li = {
'name':'wupeiqi', age:18, 'gender':'male'}func(**li)''''''#动态参数 *arg 多个参数,默认输出是元组# **arg 多个参数,默认输出是字典 show(n1=11,n2=22) 传参数要有key value# *arg,**arg show(11,22,33,n1=11,n2=22)前几个放进元组,后几个放进字典1.一个星在前,两个星放后面2.执行时按顺序# l=[11,22,33] d={
'n1':88,'n2':'hh'} show(*l,**d)'''
View Code

5.3写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数

a='123ssdf  *_'digital=0alphabet=0space=0others=0for i in a:    if i.isdigit():        digital+=1    elif i.isalpha():        alphabet+=1    elif i.isspace():        space+=1    else:        others+=1print('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 dicprint(dir_updata())
View Code

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 bb=[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+1callable(f)==True#是否可执行

9.5

chr()#数字转ascii里的字符ord()#ascii字符转数字

9.6 random随机数

import randomrandom.randint(1,99)#输出1到99的随机数随机验证码:1.随机数2.chrrandom.randrange(65,91) #大写字母random.randrange(97,123) #小写字母#产生验证码import  randomtemp=''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+=c1print(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>22ret=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)

 

 

转载于:https://www.cnblogs.com/wanghzh/p/5471336.html

你可能感兴趣的文章
jquery和dom元素相互转换
查看>>
放大的X--HDOJ-201307292012
查看>>
题目831-签到-nyoj-20140818
查看>>
百词斩-斩家秘籍
查看>>
Mysql主从配置,实现读写分离
查看>>
真事儿!——我们官网被全站拷贝了!
查看>>
抽象类及抽象方法
查看>>
Canvas基本绘画学习
查看>>
Django ORM 最后操作
查看>>
HDU 1050(贪心)
查看>>
java设计模式之代理模式
查看>>
spring心得2--bean的生命周期@Spring监听器的作用@Spring初始化容器案例分析@web项目使用...
查看>>
顺序栈
查看>>
Rsync详解
查看>>
【每日一读】Java编程中“为了性能”尽量要做到的一些地方
查看>>
什么是内网、什么是公网、什么是NAT
查看>>
【堆/排序】堆排序的两种建堆方法
查看>>
类的内置方法
查看>>
项目中使用的第三方开源库
查看>>
NOIP2009 潜伏者
查看>>