Python
InceptionZ
这个作者很懒,什么都没留下…
展开
-
【Python】AttributeError: ‘str‘ object has no attribute ‘decode‘解决方法
1. 引起问题的原因有两种原因:Python2和Python3在字符串编码上的区别。Python 3.4: str : AttributeError: ‘str’ object has no attribute 'decode2. encode与decode函数str与bytes表示的是两种数据类型,str为字符串型,bytes为字节型。对str编码encode得到bytes,对bytes解码得到str,两者互为转换。而上面出现问题的一种原因是对str字符串使用了解码,显然是猪头不对马尾。t原创 2021-12-19 10:42:35 · 17567 阅读 · 0 评论 -
【Python】sys.argv[]用法
sys.argv[]是一个从程序外部获取参数的桥梁,这个“外部”很关键,所以那些试图从代码来说明它作用的解释一直没看明白。因为我们从外部取得的参数可以是多个,所以获得的是一个列表(list),也就是说sys.argv其实可以看作是一个列表,所以才能用[]提取其中的元素。其第一个元素是程序本身,随后才依次是外部给予的参数。下面我们通过一个极简单的test.py程序的运行结果来说明它的用法。# test.py import sysa=sys.argv[0]print(a)在程序中找到 ‘运行’-原创 2021-12-06 10:16:19 · 125 阅读 · 0 评论 -
【Python】命名规约
原创 2021-11-28 16:37:17 · 388 阅读 · 0 评论 -
conda和pip install 区别
原创 2021-11-22 20:51:01 · 1165 阅读 · 0 评论 -
【python】流式处理数据技巧
def flow(): for line in sys.stdin: line = line.strip('\n') parse_log(line)然后在Linux中或者脚本中执行cat .....txt | python xxxxx.py 这样就以流的方式读取了原创 2021-07-27 18:59:37 · 1510 阅读 · 0 评论 -
【python】__new__()和__init__()的区别
__new__方法:类级别的方法特性:1.是在类准备将自身实例化时调用,并且至少需要传递一个参数cls,此参数在实例化时由python解释器自动提供;2.始终是类的静态方法,即使没有被加上静态方法装饰器;3.必须要有返回值,返回实例化出来的实例;在自己实现__new__()时需要注意:可以return父类(通过super(当前类名,cls)).__new__出来的实例,或者直接是object的__new__出来的实例class A(object): pass a=A()原创 2021-06-29 09:54:18 · 107 阅读 · 0 评论 -
【Python】将字符串类型list转换成list
需求python读取了一个list是字符串形式的’[11.23,23.34]’,想转换成list类型方法import aststr_list = "[11.23,23.34]"list_list = ast.literal_eval(str_list)print(type(list_list))或者import jsonstr_list = "[11.23,23.34]"list_list = json.loads(str_list)print(type(list_list))原创 2021-05-08 17:48:06 · 2383 阅读 · 0 评论 -
什么是HashMap?
点我转载 2020-11-25 20:55:27 · 90 阅读 · 0 评论 -
【Python】进制的转换、位运算规则
1. 进制的转换binary:二进制;octal:八进制;十六进制:hexadecimal1.1 其他进制转换为十进制使用int(其他进制数据,进制),返回数据对应的十进制,其中数据要用字符串形式注意事项:数据不可以加形如{‘0b’,‘0x’,‘0o’}的代表进制的字符int('10000000',2) # 128, 2进制转换为10进制int('200',8) # 128 , 8进制转换为10进制int('80',16) # 128 , 16进制转换为10进制原创 2020-11-06 15:18:27 · 1332 阅读 · 1 评论 -
【Python】format格式化函数
参考链接转载 2020-10-14 16:49:53 · 188 阅读 · 0 评论 -
【Python】生成器详解
写在前面生成器的基础是,所以在学习本博客之前,一定要先学习迭代器1. 什么是生成器利用迭代器,我们可以在每次迭代获取数据(通过next()方法)时按照特定的规律进行生成。但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记录,进而才能根据当前的状态生成下一个数据。为了达到记录当前的状态,并配合next()函数进行迭代使用,我们可以采用更加简便的语法,即生成器。生成器是一种特殊的迭代器2.创建生成器的两种方法2.1 类似列表解析我们都清楚列表解析,举个例子:data = [x*2 fo原创 2020-07-30 15:17:58 · 1368 阅读 · 0 评论 -
Python——numpy函数的总结
写在前面本博客属于积累博客,后续遇到一些numpy高阶函数,会全部总结在这个博客内,以下np表示numpy。1. np.where()np.where 的用法有两种,下面分别介绍,本文除非比要,均不给源码,会用就行,这种高阶函数真没必要死扣源码1.1 np.where(condition,x,y)满足条件(condition),输出x,不满足输出y。如果是一维数组,相当于[xv if c else yv for (c,xv,yv) in zip(condition,x,y)]>>&原创 2020-07-21 23:01:27 · 191 阅读 · 0 评论 -
Python——迭代器详解(全是干货)
学习目标学习迭代器是为了学习生成器,学习生成器是为了学习协程,协程就是实现多任务的一种方式知道什么是可迭代对象,能够使用isinstance检测对象是否可迭代知道使用iter函数可以获取可迭代对象的迭代器知道使用next函数可以获得迭代器数据1. 可迭代对象(1)迭代的意思就是遍历的意思,所以可迭代即为可遍历(2)常见的可遍历的对象:列表List,元组tuple,字符串,字典,range(3)一般不可遍历的对象:数字、和自定义myclass(默认)(4)myclass对原创 2020-07-17 16:15:25 · 3392 阅读 · 5 评论 -
【Python】with关键字详解
学习目标能够说出使用with的好处能够自定义复合with规范的上下文管理类1. 使用with的作用 (方式一)1.1 文件操作中的with回想一下文件操作,一般文件操作都会面临你一个问题:由于读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确的关闭文件,我们先使用try… finally来实现使用try … finally:使用这种方式,无论如何最后文件都会关闭,解决了上述问题,但是代码比较繁琐,我们思考有没有简单的方式try原创 2020-07-16 23:01:58 · 23566 阅读 · 2 评论 -
Python——property属性详解
property的主要作用在类中,当我们讲一个类方法用@property修饰时,意思就是将该函数当作类属性使用。需要注意的是,被@property修饰的类方法最好不要有除了self以外的参数,如果有,就体现不出@property的优势还有一个方便之处是,该修饰器可以替代get_xxx和set_xxx方法来获取或者设置类属性的值例子class Foo(): def __init__(self): self.num = 100 @property def prop(self):原创 2020-07-15 22:10:42 · 188 阅读 · 0 评论 -
Python——关于包的常识性知识点
什么是包?怎么导入包里边的内容?方法一:方法二:原创 2020-07-13 21:43:21 · 129 阅读 · 0 评论 -
Python——系统变量__all__
如果一个模块文件(A)中有__ all __ 变量,当使用from A import * 导入模块时,只能导入__ all __ 列表中的元素举个例子:file1.py__all__ = ['testA']def testA(): print('testA')def testB(): print('testB')file2.pyfrom file import *testA() # no errortestB() # error...原创 2020-07-13 21:34:38 · 98 阅读 · 0 评论 -
Python——导入包模块中遇到的问题
如何导入指定目录下的模块方法一:复制到当前工程目录下方法二:让程序到指定目录下去找,利用sys.path为列表的特点,把指定目录添加的环境变量sys.path原创 2020-07-13 21:14:32 · 125 阅读 · 0 评论 -
Python——系统变量__name__
系统变量__ name __ 是用标识模块的名字的一个系统变量。这里分两种情况:①假如当前模块是主模块(也就是调用其他模块的模块),那么此模块名字就是__main__,通过if判断这样就可以执行“mian:”后面的主函数内容;②假如此模块是被import的,则此模块名字为文件名字(不加后面的.py),通过if判断这样就会跳过“__ mian __:”后面的内容。举个例子:1.定义第一个file1.py,运行该文件后,会执行testA函数def testA(a,b): print..原创 2020-07-13 20:59:23 · 273 阅读 · 0 评论 -
Python——面向对象-其他
1. 面向对象三大特性2. 多态3. 类属性和实例属性4. 类方法4.1 类方法需要用到装饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,工业习惯用cls,来表示类本身4.2 使用场景4.3 注意事项类方法,可以直接用类名进行调用;也可以通过类实例化的对象进行调用,这和类属性一致5. 静态方法...原创 2020-07-12 16:26:06 · 87 阅读 · 0 评论 -
Python——私有权限
私有属性和方法的定义格式在想要定义为私有属性和方法的前面加两个下划线’__’理解私有权限一旦设置为私有权限,该方法或者属性只能在类内访问和修改,不能继承给子类什么时候用你可以假设现在类A有私有属性money,A的子类B。A不想把money继承给任何人,然后死之前就把money烧了(设置成了私有属性)如何在类外面访问私有属性和Java语言类似,我们在类里边定义get_xx函数和set_xx函数即可...原创 2020-07-11 22:02:31 · 306 阅读 · 1 评论 -
Python——文件(File)操作汇总
文章目录写在前面1. Python文件的打开、读写、关闭1.1 第一步:打开文件——open()1.2 第二步:从文件中读取/写入数据1.2.1 读数据1.2.1.1 read()1.2.1.2 readlines()1.2.1.3 readline()1.2.2 写数据1.3 关闭文件1.4 小结对文件操作的模式1.5 改变文件指针——seek()函数2. Python文件与文件夹操作(os包)2.1 文件自身操作2.1.1 文件重命名2.1.2 删除文件2.2 文件夹相关操作2.2.1 创建文件夹2.2原创 2020-07-08 23:29:28 · 8446 阅读 · 0 评论 -
Python——继承的知识点
1. 单继承不多说,很简单2. 多继承多继承指的是一个子类同时继承多个父类注意事项:当父类有重名的属性或者方法时,默认使用第一个父类的属性和方法3. 子类重写父类的属性和方法4. 使用__ mro __()查看类继承的层级关系5. 子类如何调用父类的同名方法和属性这个是知识点3的拓展,子类有父类同名的属性和方法时,我们知道子类的属性、方法会覆盖父类的属性、方法,那么有没有办法让其子类也可以访问到父类的同名的方法呢?...原创 2020-07-07 10:15:13 · 187 阅读 · 0 评论 -
Python——常用的魔法方法
写在前面在python中,形如__ xx__()的函数叫做魔法方法,指的是具有特殊功能的函数。1. __ init __ ()初始化函数用来初始化一个类对象的函数,它在类中不写并不会报错,但是不写这个类就不能用(谁会去写一个啥属性都没有的类啊,有病啊)2. __ str __()当使用print输出对象的时候,默认打印对象的内存地址。如果一个类重写了__ str __方法,那么就会打印这个方法的返回值class Person(): def __str__(self): r原创 2020-07-03 20:23:58 · 241 阅读 · 0 评论 -
Python——常用的三大高阶函数(map,reduce,filter)
1. map()语法:map(func,lst)作用:将传入的函数变量func作用到lst变量的每个元素中,并将结果组成新的迭代器返回1.1 例子计算list1序列中各个数字的2次方list1 = [1,2,3,4,5]result = map(lambda x:x**2,list1) # [1,4,9,16,25]2. functools.reduce()语法:functools.reduce(func,lst),其中func必须有两个参数作用:每次func计算的结果继续和序列的原创 2020-07-03 17:21:59 · 344 阅读 · 0 评论 -
Python——lambda表达式(匿名函数)详解
1. Lambda应用场景如果一个函数有一个返回值,并且只有一句代码,可以使用lambda简化2. lambda语法注意事项:lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适用lambda表达式能接受任何数量的参数但只能返回一个表达式的值lambda 参数列表:表达式3. 体验lambda# 1.函数def fn1(): return 100# 2.lambdafn2 = lambda:100print(fn2) # fn2函数的内存地址print原创 2020-07-03 16:59:53 · 419 阅读 · 0 评论 -
Python——交换变量值的两种方式
1. 方法一:三次交换,不说了2. 方法二a,b = 1,2a,b = b,a原创 2020-07-03 15:00:05 · 167 阅读 · 0 评论 -
python——4种函数参数
1. 位置参数(positional argument)注意事项:调用时,位置参数的顺序不能混乱def user_info(name,age,gender): print(f'姓名{name},年龄{age},性别{gender}')user_info('Tom','20','male')2. 关键字参数(keyword argument)函数调用时,通过“key-value”形式加以指定。可以让函数更加清晰,同时清除了参数的顺序需求注意事项:函数调用时,如果又位置参数时,位置参数必原创 2020-07-03 11:42:15 · 358 阅读 · 0 评论 -
python——如何在函数中修改全局变量
1. 如何修改全局变量看下面的代码:a = 100def testA(): print(a)def testB(): a = 200 print(a)print(a) # 100print(testA()) # 100print(testB()) # 200print(testA()) # 100这说明在testB函数中我们并没有修改(访问)全局变量a,而是新建了一个局部变量a,那么如何在函数中修改全局变量呢?加入global关键字def testB(): glob原创 2020-07-03 10:48:10 · 23633 阅读 · 0 评论 -
python——装饰器详解
写在前面装饰器需要一点函数的知识:在函数中定义函数;从函数中返回函数;将函数作为参数传给另外一个函数。我假设读者有这样的先验知识。1. 什么是装饰器装饰器就是用来包装函数的,在不能改变原有函数的功能属性的基础上,可以再增加一些功能。例如我装修一个房子,如果不隔音,我在墙上加一层隔音板,却不能把墙拆了,换成隔音材质的。程序中也是一样的,不会对原有函数造成改变,还要添加新的功能,调用函数时的接口没有变化。2. 用装饰器给函数增加计时的功能2.1 方案一就是最原始的python代码impor原创 2020-07-03 10:11:30 · 209 阅读 · 0 评论 -
python——三目运算符
语法条件成立执行的表达式 if 条件 else 条件不成立时的表达式a = 1b = 2 c = a if a>b else b # 令c等于a和b中最大的那个原创 2020-06-30 22:19:25 · 347 阅读 · 0 评论 -
python——常用的数据类型转换eval函数
重点理解eval函数:“用来计算在字符串中的有效python表达式,并返回一个对象”str1 = '1'str2 = '2.0'str3 = '[1,2,3]'str4 = '(1,2,3)'print(eval(str1)) # 1 ,int类型print(eval(str2)) # 2.0 ,float类型print(eval(str3)) # [1,2,3] ,列表类型print(eval(str4)) # (1,2,3) ,元组类型...原创 2020-06-30 21:57:06 · 3324 阅读 · 0 评论 -
python——对象引用、可变性
1. 变量不是盒子把变量理解为附加在对象上的标注变量a和b引用同一个列表(指向同一个地址),而不是列表的副本a = [1,2,3]b = aa.append(4)print(b)# result[1,2,3,4] 上述代码用python解释就是:将变量a分配给了列表[1,2,3],而不是将列表[]1,2,3]分配给了a创建对象之后才会把变量分配给对象2. 标识、引用(别名)、相等性2.1 标识(id)每个变量都有标识(id),类型,值。对象一旦创建,它的标识就不会改变;原创 2020-06-23 22:52:43 · 290 阅读 · 0 评论 -
numpy生成随机数
import numpy as npa=np.random.randint(0,10,100)#范围内的整数print(a)b=np.random.rand(40)#0到1的均匀分布print(b)c=np.random.randn(10)#标准正态分布print(c)d=np.random.normal(0,1,100)#生成指定正态分布print(d)e=np.random.random(20)#0到1的均匀分布print(e)f=np.random.ranf(20)#0到1的均匀原创 2020-06-21 09:15:33 · 398 阅读 · 0 评论 -
数据结构——链表
如何用python去定义列表 -*- coding:utf-8 -*-class ListNode: def __init__(self, x): self.val = x self.next = Nonedef print_Node(node): while node: print(node.val) node = node.nextnode1 = ListNode(1)node2 = ListNode(2)node3 = ListN..原创 2020-06-14 22:01:20 · 97 阅读 · 0 评论 -
【Python】字典常用内置函数
链接博客转载 2020-06-12 22:05:55 · 135 阅读 · 0 评论 -
【Python】列表常用内置函数
原创 2020-06-12 21:57:12 · 246 阅读 · 0 评论 -
【Python】字符串的常用内置函数
原创 2020-06-12 21:40:17 · 425 阅读 · 0 评论 -
for item in (interator)的注意事项
你不应该修改你正在迭代的东西。这不能保证在所有情况下都能正常工作。根据数据类型的不同,迭代器返回一个副本而不是一个视图,写入它将不起作用。test_list = [1,2,3,4]for item in test_list: item += 1print(test_list)# result[1,2,3,4]可以发现我们在for循环中对item执行操作并不会对原有数组test_list有影响,所以说,迭代器返回的是一个副本。...原创 2020-06-12 20:51:38 · 2920 阅读 · 0 评论 -
广度优先搜索详解(附上python代码)
写在前面本博客深度讲解广度优先遍历及其代码实现1. 广度优先搜索是关于图数据结构的一种算法,它可以回答两个问题:①从节点A出发,有前往结点B的路径么?②从节点A出发,前往结点B的哪条路径最短?2. 预备概念一度关系:A——>B二度关系:A——>B——>C,A与C为二度关系我们搜索最短路径是按照一度关系优于二度关系以此类推,找到最短路径的。广度有限搜索需要一个队列来存储每次访问结点的信息3. 举个简单例子现在假设我们要寻找结点A到结点G的最短路径,考虑下面原创 2020-06-08 23:04:18 · 5910 阅读 · 4 评论