Python学习笔记
Python学习笔记
Guuuuuu老师儿
当初的算法竞赛题目博客的留言评论就不回复了,时间太久已经忘干净了,抱歉~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
python关于+=的陷阱
看下面代码t = (1, 2, [30, 40])t[2] += [50, 60]我们知道tuple元组是个不可变元素,所以更改元组的元素道理上是不行的,但是我改变的元素是个列表,它本身是可变的,这样可行吗??先别去控制台运行,猜是下面哪一种:t 变成 (1, 2, [30, 40, 50, 60])。因为 tuple 不支持对它的元素赋值,所以会抛出 TypeError 异常。以上两个都不是。a 和 b 都是对的。\\\\\\\\\\\\\\\\\原创 2020-10-24 11:33:36 · 394 阅读 · 1 评论 -
python对序列使用*的陷阱
python中我们可以使用对序列乘一个数字达到复制的目的比如a = [1],那么a * 5 = [1, 1, 1, 1, 1]但是要注意如果在a * n这个语句中,序列 a 里的元素是对其他可变对象的引用的话,那么复制的其实是同一个对象的引用,那么当你试图修改其中复制的一个元素时,其他元素都是跟着改变。例如my_list = [[]] * 3 来初始化一个由列表组成的列表,但是你得到的列表里 包含的 3 个元素其实是 3 个引用,而且这 3 个引用指向的都是同一个列表。...原创 2020-10-24 11:07:27 · 395 阅读 · 0 评论 -
关于Jupyter Notebook(IPython解释器)的一些神奇小技巧(Tab补全,内省,魔术命令等)
Tab补全当我们写了一半的变量名或者函数名,如果命名空间中已经存在了,那么按下tab键可以自动补全,如果有多个选择,会给出下拉列表的提示,当然如果已经使用了jupyter notebook的自动补全插件那么就会自动提示或自动完成补全。内省使用问号(?)在变量名或函数名后面使用?可以显示变量的信息2.使用双?可以显示函数源码3. 和*号结合使用当做通配符查找对象的方法这个例子就是查找np中有load子串的方法魔术命令这里的魔术命令特指的就是IPython解释器的一些特殊的命令,和pyt原创 2020-10-17 11:29:17 · 952 阅读 · 1 评论 -
Python具名元组
collections.namedtuple 是一个工厂函数,它可以用来构建一个带字段名的元组和一个有名字的类。注意:用 namedtuple 构建的类的实例所消耗的内存跟元组是一样的。from collections import namedtupleCity = namedtuple('City', 'name country population coordinates')tokyo = City('Tokyo', 'JP', 36.933, (35, 139))tokyo # City原创 2020-10-15 23:22:36 · 454 阅读 · 0 评论 -
python元组拆包——用*来处理剩下的元素
在 Python 中,函数用 *args 来获取不确定数量的参数算是一种经典写法了Python 3 里,这个概念被扩展到了平行赋值中在平行赋值中,* 前缀只能用在一个变量名前面,但是这个变量可以出现在赋值表达式的任意位置...原创 2020-10-14 21:45:43 · 369 阅读 · 0 评论 -
python的容器序列和扁平序列
容器序列list、tuple 和 collections.deque 这些序列能存放不同类型的数据。扁平序列str、bytes、bytearray、memoryview 和 array.array,这类序列只能容纳一种类型容器序列存放的是它们所包含的任意类型的对象的引用,而扁平序列里存放的是值而不是引用。换句话说,扁平序列其实是一段连续的内存空间。由此可见扁平序列其实更加紧凑,但是它里面只能存放诸如字符、字节和数值这种基础类型。...原创 2020-10-14 20:51:58 · 772 阅读 · 1 评论 -
python魔术方法(dunder method)__len__, __getitem__, __repr__等
python里这些特殊方法的存在是为了被python解释器调用的,自己并不需要调用他们,不存在my_object.__len__()这种写法,而应该使用 len(my_object),用户通过使用len()这种通用的方法,解释器去调用__len__()方法。这里len需要多说两句:在执行 len(my_object) 的时候,如果 my_object 是一个自定义类的对象,那么 Python 会自己去调 用其中由你实现的__len__()方法。 然而如果是 Python 内置的类型,比如列表(list)原创 2020-10-14 17:17:08 · 342 阅读 · 0 评论 -
python IO编程知识点
学习资料来自廖雪峰python文件读写使用open()函数得到文件对象,调用read()方法读取,最后完成后务必调用close()方法关闭文件,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的。参数’r’读取文本文件,'rb’读取二进制文件。read()一次读取文件全部的内容,read(size)每次最多读取size个字节的内容,readline()可以每次读取一行内容,readlines()一次读取所有内容并按行返回list。只要写个read()方法就叫做fil原创 2020-09-16 08:53:46 · 267 阅读 · 0 评论 -
Python变量存储方式以及深浅拷贝
Python变量存储方式以及深浅拷贝(关于学习廖雪峰Python教程的一些个人总结)变量存储Python是动态语言。可以把任意数据类型赋值给变量,无需提前声明变量类型,同一个变量可以反复赋值,而且可以是不同类型的变量。下面引用廖雪峰Python教程的简单例子,描述变量存储过程:当我们写a = 'ABC'时,Python解释器干了两件事情:在内存中创建了一个'ABC'的字符串;在内存中创建了一个名为a的变量,并把它指向'ABC'。下面程序a = 'ABC'b = aa =原创 2020-07-03 13:11:55 · 399 阅读 · 1 评论 -
Python排序
Python排序sorted函数常用参数sorted(iterable, key=None, reverse=False)iterable:可迭代的对象比如列表list,元组tuple,字典dict等,也就是待排序的集合key:用来进行比较的元素,可以是函数名或者lambda表达式,返回的是用来比较的元素,可以返回多个,则先按第一个排序,相等再按后面的。reverse:默认按比较元素从小到大排序,reverse=True则反过来从大到小排序,也可以给比较元素前加负号。举个????:原创 2020-07-03 13:01:52 · 173 阅读 · 1 评论 -
Python关于不可变对象
Python关于不可变对象(关于学习廖雪峰Python教程的一些个人总结)首先什么是不可变对象,不可变对象首先是个对象,一旦创立了这个对象,这个对象就不能再改变了。关于数字,字符串Python中数字,字符串都是不可变对象,咦?你可能问怎么不可变,我令a=1,我还可以再令a=2,我令s='abc',我还可以再令s='ABC'。注意这个说法是错误的,因为你改变的是变量而不是数字对象或者字符串对象本身,根据Python的变量存储方式,a=1或者s='abc'是在内存中开辟一块空间创建了1或'abc'这个原创 2020-07-03 12:59:59 · 520 阅读 · 0 评论 -
Python关于编码的一些总结
Python关于编码的一些总结(关于学习廖雪峰Python教程的一些个人总结)首先你一定听过Unicode,UTF-8,ASCII编码。在编码使用的字节长度上:ASCII:美国人发明,最早只有127个字符(包括大小写英文,数字,符号)被编码到计算机里,只用一个字节表示。Unicode:但是每个国家都有自己的语言,一个字节肯定不够,就得需要两个或者更多字节表示,每个国家都制定了自己的编码标准,比如中国的GB2312编码,但是这样容易冲突导致乱码。所以Unicode标准产生,统一所有语言,通常用两个字原创 2020-07-03 12:59:15 · 276 阅读 · 0 评论 -
Python 列表生成式和生成器?可迭代和迭代器?
Python 列表生成式和生成器?可迭代和迭代器?列表生成式和生成器?列表生成式,就是一个能够生成列表的推导式,用[]括起来,里面是一个包含for循环的推导式,形式一般如下:[x * x for x in range(1, 11) if x % 2 == 0]意思是从1-10遍历,选取偶数数字然后平方组成新的列表。生成器,generator,两种写法,第一种把上面的列表生成式的中括号[]改成小括号(),如下:g = (x * x for x in range(10))需要注意这样得到的不是原创 2020-07-02 08:23:45 · 278 阅读 · 0 评论
分享