python 语法进阶
lansfair
算法工程师
展开
-
深拷贝与浅拷贝
1. 浅拷贝 对于python而言,"="仅会传递引用 a = [1, 2, 3] b = a 如创建一个list a ,再把a赋给b,仅会将a创建的list地址指针传递给b,让b指向a的创建的list地址,而不是新创建一个list对象 这时,修改b的值,会造成a中的值也会发生变化 b[0] = 5 因此为了解决可变对象的引用可能会产生的冲突(修改一个,导致另一个不希望改变的变量也改变了),可以使用浅拷贝来避免冲突,浅拷贝的使用方法有两.原创 2022-04-21 21:41:21 · 535 阅读 · 0 评论 -
numpy的基本操作上
1. 数组的构造 通过array构造 np.array([1, 2, 3]) 等差序列np.linspace()或np.arrange() np.linspace,取头和尾,中间均匀取点 np.linspace(start=0, stop=8, num=5) # 起始、终止(包含)、样本个数 #输出:array([0., 2., 4., 6., 8.]) x=np.linspace(6,18,7) #输出:[ 6. 7.71428571 9.42857143原创 2022-04-19 20:41:48 · 603 阅读 · 0 评论 -
匿名函数与map方法
有时候我们想临时实现一个操作,并且以后也不想在程序的其他地方中调用这个函数,那么就可以使用匿名函数,不指定函数名,只需要对应的函数映射关系 [(lambda x: 2*x) (i) for i in range(5)] #输出:[0, 2, 4, 6, 8] 对于上述的这种列表推导式的匿名函数映射,还可以map函数来完成,map(function,iterator) list(map(lambda x, y: str(x)+'_'+y, range(5...原创 2022-04-16 20:29:22 · 585 阅读 · 0 评论 -
列表推导式
普通写法 # 生成一个数字序列 L = [] def my_func(x): return 2*x for i in range(5): L.append(my_func(i)) L #输出[0,2,4,6,8] 列表推导式 可以利用列表推导式进行写法上的简化:[* for i in *]。其中,第一个`*`为映射函数,其输入为后面`i`指代的内容,第二个`*`表示迭代的对象,比如range(5)。 M=[2*i for i in range(5)] #...原创 2022-04-16 20:25:55 · 1277 阅读 · 0 评论 -
*args和**kwargs
*args和**kwargs的区别 首先*args和**kwargs的区别主要是*和**的区别,与变量名args和kwargs无关,也可以命名成*cat和**dog;*args接收不带变量名的变量,**kwargs接收带变量名的变量。*args和**kwargs可以共同使用,但是顺序一定是先*args,再**kwargs *args *args接收多余的不带变量名的变量,如图中的3,4,5,6,7,并保存为tuple,就可以用遍历和索引方式访问args,比如这里将arg...原创 2022-04-15 15:25:49 · 1429 阅读 · 0 评论