map(func, seq1[, seq2,…])
:处理值到函数的映射。func表示函数名,seq为序列,若函数的参数有多个则需多个序列。返回以序列为参数的func的结果序列,是一个可迭代对象,也可以直接遍历。# example 1
x = list(map(lambda x: x % 2, range(7)))
x # [0, 1, 0, 1, 0, 1, 0]
# example 2
def f1(a):
return 2*a
def f2(a,b):
return a+b
x = list(map(f1,[1,2,3,4]))
print(x)
y = list(map(f2,[1,2,3,4],[4,3,2,1]))
print(y)
# [2, 4, 6, 8]
# [5, 5, 5, 5]
# example 3
a = map(f1,[0,2,3,4])
for i in a:
print(i,end=' ')
# 0 4 6 8
reduce(function, sequence, initial=None)
:会对参数序列中元素进行function操作。from functools import reduce
def add(x, y) : # 两数相加
return x + y
sum1 = reduce(add, [1,2,3,4,5]) # 计算列表和:1+2+3+4+5
sum2 = reduce(lambda x, y: x+y, [1,2,3,4,5]) # 使用 lambda 匿名函数
sum1 = reduce(add, [1,2,3,4,5], 6) #设置初始值为6,则结果为6+1+2+3+4+5
print(sum1) #15
print(sum2) #15
print(sum2) # 21
to_3tuple()
:转换为长度为3的tuplefrom timm.models.layers import to_2tuple,to_3tuple # 导入
a = 224
b = to_2tuple(a)
c = to_3tuple(a)
print("a:{},b:{},c:{}".format(a,b,c)) # a:224,b:(224, 224),c:(224, 224, 224)
print(type(a),type(b)) #
用于将src的文件复制到dst,dst可以是目录或文件名
import shutil
# shutil.copy2(【要被复制的文件】,【复制后存放的位置】)
shutil.copy2("D:/TOOLS/public.txt","D:/fart/a/b/c/d/e/kok/") #文件名没指定默认为src文件名
import shutil
#shutil.copy2(【要被复制的文件】,【复制后存放的文件】),指定文件名
shutil.copy2("D:/TOOLS/public.txt","D:/fart/a/b/c/d/e/kok/HH.txt")
shutil.copy2("D:/TOOLS/public.txt","D:/fart/a/b/c/d/e/kok/HH.so")
shutil.copy2("D:/TOOLS/public.txt","D:/fart/a/b/c/d/e/kok/666")
zip([iterable, ...])
:zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。注意返回的是对象,通常会将其转换成列表进行访问
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b) # 返回一个对象
>>> zipped
>>> list(zipped) # list() 转换为列表
[(1, 4), (2, 5), (3, 6)]
>>> list(zip(a,c)) # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> a1, a2 = zip(*zip(a,b)) # 与 zip 相反,zip(*) 可理解为解压,返回二维矩阵式
>>> list(a1)
[1, 2, 3]
>>> list(a2)
[4, 5, 6]
在处理数据方面可以实现数据打乱
import random
X = [1, 2, 3, 4, 5, 6]
y = [0, 1, 0, 0, 1, 1]
zipped_data = list(zip(X, y))
# 将样本和标签一 一对应组合起来,并转换成list类型方便后续打乱操作
random.shuffle(zipped_data)
# 使用random模块中的shuffle函数打乱列表,原地操作,没有返回值
new_zipped_data = list(map(list, zip(*zipped_data)))
# zip(*)反向解压,map()逐项转换类型,list()做最后转换
new_X, new_y = new_zipped_data[0], new_zipped_data[1]
区别:sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
sorted(iterable, cmp=None, key=None, reverse=False)
>>>a = [5,7,6,3,4,1,2]
>>> b = sorted(a) # 保留原列表
>>> a
[5, 7, 6, 3, 4, 1, 2]
>>> b
[1, 2, 3, 4, 5, 6, 7]
>>> L=[('b',2),('a',1),('c',3),('d',4)]
>>> sorted(L, cmp=lambda x,y:cmp(x[1],y[1])) # 利用cmp函数
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
>>> sorted(L, key=lambda x:x[1]) # 利用key
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
>>> students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
>>> sorted(students, key=lambda s: s[2]) # 按年龄排序
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
>>> sorted(students, key=lambda s: s[2], reverse=True) # 按降序
[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
参考链接:教程文档
vars(obj) ---> dictionary
opt = opts.parse_opts()
vars(opt)
getattr(obj, attr[, default]
:返回一个对象的属性值,若该对象没有该属性,返回默认值default以下实例展示了 getattr 的使用方法:
>>>class A(object):
... bar = 1
...
>>> a = A()
>>> getattr(a, 'bar') # 获取属性 bar 值
1
>>> getattr(a, 'bar2') # 属性 bar2 不存在,触发异常
Traceback (most recent call last):
File "", line 1, in
AttributeError: 'A' object has no attribute 'bar2'
>>> getattr(a, 'bar2', 3) # 属性 bar2 不存在,但设置了默认值
3
>>>
def zero(s):
a = int(s)
assert a > 0,"a超出范围" #这句的意思:如果a确实大于0,程序正常往下运行
return a
zero("-2") #但是如果a是小于0的,程序会抛出AssertionError错误,报错为参数内容“a超出范围”
# 报错
Traceback (most recent call last):
File "e:\Python_list\class_student\temp.py", line 6, in
zero("-2")
File "e:\Python_list\class_student\temp.py", line 3, in zero
assert a > 0,"a超出范围"
AssertionError: a超出范围
b'example'
; 字符串对象:'example'
s = 'hello'
# 方式1:必须指定编码方式
b = bytes(s,encoding='utf8')
print(b) # b'hello'
# 方式2:
b1 = s.encode() # b'hello'
b2 = str.encode(s) # b'hello'
s1 = bytes.decode(b) # hello
s2 = b.decode() # hello
*
和**
的用法*
和**
分别表示乘法和乘方运算*
的使用*parameter
表示接收任意多个参数并将其放在一个元组中 def demo(*p):
print(p)
demo(1,2,3)
# (1, 2, 3)
* sequence
在列表、元组、集合等可迭代对象前作为实参,解释器将自动进行解包将可迭代对象中的元素对应传给参数z = (1,2,3)
print(*z)
#123
>>> fruits = ['lemon', 'pear', 'watermelon', 'tomato']
>>> first, second, *remaining = fruits
>>> remaining
['watermelon', 'tomato']
>>> first, *remaining = fruits
>>> remaining
['pear', 'watermelon', 'tomato']
>>> first, *middle, last = fruits
>>> middle
['pear', 'watermelon']
**
的使用def demo(**p):
return p
demo(a=1, b=2)
# {'a':1, 'b':2}
dic = {'a':1, 'b':2, 'c':3}
str = '{a}-{b}-{c}'.format(**dic) # '1,2,3'