python学习笔记(三)

tips:pass的用途

  pass是为了占据一个位置,因为如果定义一个空函数程序会报错,当你没有想好函数的内容是可以用 pass 填充,使程序可以正常运行。

Python time sleep() 函数推迟调用线程的运行,可通过参数secs指秒数,表示进程挂起的时间。

集合的特点:

1)访问速度快;

2)天生解决重复问题

3)difference_update() 方法与 difference() 方法的区别在于 difference() 方法返回一个移除相同元素的新集合,而 difference_update() 方法是直接在原来的集合中移除元素,没有返回值。

  实例:更新数据库

old_set = set(old_dict.keys())
update_list = list(old_set.intersection(new_dict.keys()))#相交

new_list = []
del_list = []

for i in new_dict.keys():
    if i not in update_list:
        new_list.append(i)

for i in old_dict.keys():
    if i not in update_list:
        del_list.append(i)

print update_list,new_list,del_list

  地址:

https://www.cnblogs.com/wupeiqi/articles/4911365.html

2.Diffsymm-diff的区别

diff:A-B

symm-diff:a+b-ab

3.collections系列

Counter是对字典类型的补充,用于追踪值出现的次数。

c = Counter('abcdeabcdabcaba')
print c
输出:Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1})

 

tips:Counter(dict)是一种字典,实例如下:

import collections
obj = collections.Counter('nnanchbsdcnnxuwbcashduwdiqjabuivbuqehdiqjsio')
print(obj)
ret = obj.most_common(4)
print(ret)
for k,v in obj.items():
    print(k,v)

运行结果为:

 

  

n 5
a 3
c 3
h 3
b 4

tips:subtract减去

3)有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。

代码如下:

from collections import defaultdict

values = [11,22,33,44,55,66,77,88,99,90]
my_dict = defaultdict(list)

for value in values:
    if value>66:
        my_dict['k1'].append(value)
    else:
        my_dict['k2'].append(value)

print(my_dict)

Tips:元组不可修改

所以元组到底可不可变?从上面可以看到tuple不支持=这种assign操作,但是对其中可变元素的原地修改是可以的+=, -=, =, /=, //=, %=, *=, <<=, >>=, &=, ^=, |=这些操作符都是原地修改可变对象,不会改变对象所以,tuple元组的不可变是指元素对象的引用不可变,不能对其再次赋值,但是在其中可变元素对象的引用不被修改前提下,仍旧可以对可变元素对象修改

4.可命名元组

代码实例如下:

import collections
MytupleClass = collections.namedtuple('Mytuple',['x','y','z'])
obj = MytupleClass(11,22,33)
print(obj)

tips:deque.rotate():将最后几个数放到队列前面

数字或者字符串深浅拷贝并不改变其内存位置。

深浅拷贝示意图:

浅拷贝只拷贝一层

深拷贝可以拷贝多层

实例:

import copy
dic = {'cpu':[80,],
       'mem':[80,],
       'disk':[80,]}
print('before',dic)
new_dic = copy.deepcopy(dic)
new_dic['cpu'][0] = 50
print(new_dic)

函数:

默认参数

实例:

def plus():
    a= int(input('请输入第一个数'))
    b = int(input('请输入第二个数'))
    c = a+b
    print(c)

plus()

形式参数的运用:

def plus(c):
    while c<1000:
        c +=1
    print(c)

plus(10)

默认参数的运用:

def show(a1,a2=999):
    print(a1,a2)

show(111,888)

运行结果为:111,888

show(a2=111,a1=888)#指定参数
def show(*arg):
    print(arg,type(arg))

show(11,222,333,)#*转换为元组
def show(**arg):
    print(arg,type(arg))

show(n1=11,n2=43)#转换为字典
def show(*args,**kwargs):
    print(args,type(args))
    print(kwargs,type(kwargs))

show(11,22,33,444,n1=100,alex='sb')

特别注意的是:

def show(*args,**kwargs):
    print(args,type(args))
    print(kwargs,type(kwargs))

l1 = [11,222,333,444]
d1 = {'n1':100,'alex':'sb'}
show(*l1,**d1)

l1作为元组,d1作为字典,为了不变成元组元素,需要分别加星。

5.字符串的格式化

s1 = '{0} is {1}'
ret = s1.format('alex','sb')
print(ret)

s2 = '{name} is {acter}'
d = {'name':'alex','acter':'2b'}
result = s2.format(**d)
print(result)

6.lambda函数

func = lambda a:a+1#创建形式参数a,函数内容a+1并return
ret = func(99)
print(ret)

7.内置函数

Tips:ascii() 函数返回任何对象(字符串,元组,列表等)的可读版本。ascii() 函数会将所有非 ascii 字符替换为转义字符:å 将替换为 \xe5

 

class Foo:
    def __repr__(self):
        return 'clutch'
f = Foo()
ret = ascii(f)
print(ret)

 

__repr__object转换为string格式,ascii()转换为标准版本。

 

Bytearray功能:转换为二进制数组。

 

Tips:callable()是否可执行

 

Ord:字母转换为ascii

 

Chr():ascii码转换为字母chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。

eval('6*8')

用来执行字符串表达式,并返回值。

48

Map函数

li = [11,22,33]

>>> new_li = map(lambda x:x+100,li)#返回迭代器

>>> for i in new_li:print(i)

...

111

122

133

li = [11,22,33]

def func(x):
    if x>22:
        return True
    else:
        return False

n = filter(func,li)
print(list(n))

Filter筛选

Oct()八进制

Hex()十六进制

Round()四舍五入

Dir()返回key

Vars()返回key与value

Zip()返回数对

f = open('test.log','w')
f.write('dcabd')
f.close()

f = open('test.log','r')
ret = f.read(2)
f.close()
print(ret)

按字符去读取,f.tell()用指针(按照字节)。f.seek()改变指针位置

ret = f.read()
ret2 = f.truncate()
f.close()
print(ret2)
print(ret)

Truncate()保留指针前的字符

 

posted @ 2020-02-13 21:59  huxiaojie  阅读(175)  评论(0编辑  收藏  举报