python
fltenwall
数据科学与人工智能硕士
展开
-
Python中的列表、元组和字典
Python中的列表、元组和字典列表List创建访问通过索引进行访问list = [1,2,3,4]a=list[0] # 1b=list[-1] # 4切片[start : end :step] 以step为间隔截取start到end(不包含)之间的所有元素;支持负数索引;list[num:]表示从指定num开始到最后;list[:num]表示从开头到指定的num为止相加(合并)列表只能和列表相加乘法可列表包含的元素重复N次可用于填充列表原创 2021-04-27 16:40:55 · 402 阅读 · 1 评论 -
python中的堆
python中的堆以及堆操作# heapqt提供了对应堆的支持,构建的是小顶堆from heapq import *my_data = [7,6,3,2,9,0,1,5,4]# 对my_data应用堆属性,即堆化heapify(my_data)print(my_data) # [0, 2, 1, 4, 9, 3, 7, 5, 6]# 添加一个元素,堆自动调整,继续满足小顶堆heappush(my_data,0.5)print(my_data) # [0, 0.5, 1, 4, 2,原创 2021-04-27 14:35:02 · 3639 阅读 · 0 评论 -
计数排序和桶排序——python和javascript实现
计数排序python版不稳定计数排序# 不稳定计数排序def count_sort(arr): max,min = findMaxAndMin(arr) space = max - min countArr = [0] * (space+1) resultArr = [] # 计数 for num in arr: for j in range(0,space+1): if num == j: countArr[j]+=1 # 排序 for i in ran原创 2021-04-26 14:23:30 · 189 阅读 · 1 评论 -
计数排序的python实现和javascript实现
python实现def count_sort(arr): max,min = findMaxAndMin(arr) space = max - min countArr = [0] * (space+1) resultArr = [0] * (space+1) for num in arr: for j in range(0,space+1): if num == j: countArr[j]+=1 for i in range(0,len(countArr)): i原创 2021-04-25 17:31:08 · 156 阅读 · 2 评论 -
快速排序的双指针递归与非递归、单指针递归与非递归实现
双向递归def quick(start_index,end_index,arr): # 递归 if start_index >= end_index: return base = getBase(start_index,end_index,arr) quick(start_index,base-1,arr) quick(base+1,end_index,arr)def getBase(start_index,end_index,arr):原创 2021-04-25 09:38:52 · 195 阅读 · 0 评论 -
快速排序的python、java、javascript实现
概述快速排序与冒泡排序的相似处是都采取了临近比较、交换两值的方式,快速排序的特点在于运用了分治法,每次都将数组分成两个部分,与一个基准元素进行比较,比标志位大的放在标志位的右边,比标志位小的放在标志位的左边。基准元素的选择可以是简单的使用列表的第一个元素,也可以任意进行选择。快速排序的python实现def quickFixedFinal(startIndex, endIndex, arr=[]): if startIndex >= endIndex: return原创 2021-04-21 17:50:25 · 154 阅读 · 0 评论 -
使用java,javasript,python实现冒泡排序的三个版本
概要冒泡排序是最简单的一种排序方式,最基础的实现用嵌套的两层for循环即可实现。但是即便是最简单的冒泡排序也存在着很大的优化空间,我们可以对两层循环分别进行优化。首先来看一下两层for循环的作用:外层for循环是对比较趟数的控制内层for循环时对每一趟比较次数的控制存在的优化空间是:对于外层循环,如果数组已经有序,就不需要再进行外层循环了,需要一个标记来进行跟踪数组是否已经有序。而有序的标志是某一趟不再进行数据交换了。对于内层循环,由于冒泡排序每一次是把最大的放到最后,所以后面的元素是有序的,原创 2021-04-21 16:52:03 · 181 阅读 · 0 评论 -
python3实现json转excel
数据[ { "name":"flten", "category":"com", "count":1, "location":"上海", "time":"2020-7-2" }, { "name":"flten", "category":"com", "count":1, "location":"上海", "time":"2020-7-2" }, { "name":"flten", "category":"com", "count":1, "locat原创 2020-07-02 14:08:26 · 4728 阅读 · 0 评论 -
python3嵌套列表排序
嵌套列表排序列表:demolist = [[3,'b','2020-7-1'],[2,'e','2020-6-26'],[10,'a','2020-8-16']]排序:demolist.sort(key=lambda x: x[1], reverse=False)说明:reverse为False则按从大到小降序排列,为True则按从小到大升序排列示例:...原创 2020-07-01 11:19:00 · 1658 阅读 · 1 评论 -
bug追踪的几种方式
bug追踪的几种方式(1)梳理逻辑:最好的方式是让程序按照自己所想的方式运行,而不是频繁的依靠console.log打印结果,想要达到这种效果就要先理顺自己的逻辑,看每一次返回的值是否有类型错误,判断条件是否有误(2)回溯:报错的问题可能不是bug的源头,可以打印中间结果一步一步进行回溯(3)排除:经常各种函数、方法之间有调用关系,为了防止bug定位错误,可以先局部排除独立函数或方法的代码,防止定位错位进行了修改,反而产生了更新的bug(4)恰当注释:对于代码调用关系、逻辑比较复杂、代码量又原创 2020-06-30 23:02:24 · 2482 阅读 · 0 评论 -
python3时间格式化
python时间格式化import timeimport os# 获取文件修改时间(时间戳)dirpath = '/home/xl/project/demo.txt't = os.path.getmtime(dirpath)# 转化为本地时间time_local = time.localtime(t)# 格式化时间folderChangeDate = time.strftime("%Y-%m-%d-%H:%M:%S",time_local)# 只保留日期simpleDate =原创 2020-06-25 17:12:19 · 498 阅读 · 0 评论 -
python3分割路径、文件名、扩展名
import osfilepath = '/home/xl/project/demo.txt'(file_path, tempfilename) = os.path.split(filepath)# file_path = '/home/xl/project'# tempfilename = 'demo.txt'(file_name, extension) = os.path.splitext(tempfilename)# file_name = 'demo'# extension = '原创 2020-06-25 17:07:29 · 1271 阅读 · 0 评论 -
python3 list去重、分割以及判断是否包含元素
list去重(嵌套list去重)# 普通list去重a=[1,2,3,4,1,2,3,4]a=list(set(a))print(a)#输出:[1, 2, 3, 4]# 嵌套list去重b=[[1,2,3,4],[1,2,3,4],[1,2,3,4]]b = [list(t) for t in set(tuple(_) for _ in b)]print(b)#输出:[[1, 2, 3, 4]]如果使用set()对嵌套list去重会报错:TypeError: unhashable原创 2020-06-25 16:54:32 · 902 阅读 · 0 评论 -
python3遍历列表、元组、集合的三种方式
已列表为例,元组、集合都可以使用以下三种方式进行遍历代码结果原创 2020-06-21 17:46:29 · 1487 阅读 · 0 评论 -
python3continue造成的死循环问题
continue造成的死循环问题下面的代码中,由于i++位于continue之后,因此当i == 5时,后面的i++将永远不会执行,从而造成死循环问题。 # python continue死循环 i = 0 while i < 10: if i == 5: continue; print(i); i++;解决continue死循环问题将i++置于continue之前即可 i = 0 while i < 10: if i == 5: i++;原创 2020-06-21 17:04:47 · 893 阅读 · 0 评论 -
python3类型转换
数值与字符串互转# 数值转字符串numInt = 10numstr1 = str(numInt)numFloat = 10.5numstr2 = str(numFloat)# 字符串转数值strInt = '10'intNum = int(strInt)strFloat = '10.3'floatNum = float(strFloat)字符串转列表、元组、集合# 字符串转表达式str = '2 + 5'result = eval(str) # 7# 字符串转列表原创 2020-06-21 11:03:38 · 284 阅读 · 0 评论 -
python3对比字符串拼接的效率
对比字符串拼接的效率代码compareTime.pycompareTime2.py对比时间迭代10000次直接字符串拼接的方式更快迭代100000次使用数组转字符串拼接的方式更快迭代1000000次使用数组转字符串拼接的方式优势更加明显...原创 2020-06-20 10:53:51 · 578 阅读 · 0 评论 -
python3实现图片虚化显示轮廓
成就一番伟业的唯一途径就是热爱自己的事业。如果你还没能找到让自己热爱的事业,继续寻找,不要放弃。跟随自己的心,总有一天你会找到的。目标将一张图片进行虚化,只显示出其轮廓,一个很酷的效果,但代码却只需要四行。代码代码就只有这么短短的四行。下载依赖踩坑根据代码很容易联想是下载PIL,但结果:解决正确的方法是下载依赖Pillow执行结果对比查看完美!...原创 2020-06-19 23:53:10 · 1658 阅读 · 0 评论 -
python3利用jieba分词
没有人一开始就能想清楚,只有做起来,目标才会越来越清楚。——马克·扎克伯格下载jiebapip3 install jieba创建测试文件jiebaDemo.txt编写代码import jiebafilepath = input("input your path:")with open(filepath,encoding='utf-8') as f: words = jieba.lcut(f.read()) print(words)执行结果得到的结果是一个li原创 2020-06-19 23:14:07 · 323 阅读 · 0 评论 -
python3提取指定文件夹下的所有文件名
如果你刻意练习某件事超过10000小时,那么你就可以达到世界级。——拉里·佩奇(Google创始人)提取指定文件夹下的所有文件名代码import oswith open('./listdir.txt','a') as f: path = input('path:') try: list = os.listdir(path) for i in range(0,len(list)): filename = os.path.spl原创 2020-06-19 22:50:27 · 1772 阅读 · 0 评论 -
flask渲染模板文件
创建模板文件在vent1同级目录下创建templates文件夹,这是flask中默认在templates下寻找模板文件{{name}}的值是从渲染模板时使用的数据中获取python代码必须引入render_template,这个flask中提供的模板渲染函数/user/<username>中的username是动态的从url中获取传入的值name=username中的name要与模板中{{name}}相同启动服务远程访问...原创 2020-06-19 17:11:19 · 356 阅读 · 0 评论 -
使用flask开发第一个web服务器
安装pip3 install flask查看安装包pip3 list --format columns代码from flask import Flaskapp = Flask(__name__)@app.route('/')def hello_world(): return 'hello world!'if __name__ == '__main__': app.run()启动服务原创 2020-06-19 16:27:49 · 288 阅读 · 0 评论 -
python3安装并激活virtualenv环境
安装virtualenvpip3 install virtualenv查看virtualenv的版本virtualenv --version创建虚拟环境virtualenv venv1激活虚拟环境切换到创建的虚拟环境vant1的bin目录下source ./activate原创 2020-06-19 16:10:34 · 1052 阅读 · 0 评论 -
python3开发博客计划
python3开发博客计划事由舍友不是做测试的,但是想转开发,需要一个比较完整的项目入手一门语言,上手一个框架,熟悉整个项目开发的流程,从最初的项目架构、界面设计、技术选型、方案评估、接口设计到最后的开发实现、上线部署,全流程走一遍,并能够实际运用起来开发的项目,思来想去还是开发一个博客比较合适。方案目前我想的用python3作为开发语言,使用flaskweb框架,数据库选用mysql和redis,前端将主要使用vue,先做一个雏形,初步迭代和优化。因为舍友从未使用python开发过实际项目,也没有原创 2020-06-19 15:44:34 · 258 阅读 · 0 评论 -
python3参数为整形(int)问题
问题昨天同事遇到一个问题,程序逻辑来回看了很多遍总觉得是没有问题的,那就应该不是程序的原因,而可能是忽略了某些细节点,结果也果真如此。在url拼接的参数中传入的整形是被当做字符串处理的,因此就需要接受参数后将参数进行类型转换。解决int(str)将参数被默认转为字符串的整数用int转为整数就可以了。...原创 2020-06-19 15:23:15 · 1507 阅读 · 0 评论 -
Python3报错:TypeError: list indices must be integers or slices, not str
问题示例代码:strlist = ['a','b','c']for i in strlist: if strlist[i] > 0: ...报错:TypeError: list indices must be integers or slices, not str解决原因很简单:python里对list进行for遍历,默认第一个参数为list中的元素,而上面代码中的strlist[i]实际上strlist['a']。因此想要遍历list,对其中的string类型元素进行长短判断,原创 2020-06-18 23:37:33 · 12100 阅读 · 0 评论 -
python3中将json.dumps()结果显示为中文
问题今天同事问我一个编码报错的问题怎么解决,初步判断是用的方法没有encoding这个参数然后看了下代码:self.write(json.dumps(result,encoding='utf-8'))解决果然,json.dumps()这个方法是没有encoding这个参数的,要想将默认的ascii字符改为中文,应该将ensure_asciii设为Falseself.write(json.dumps(result,ensure_ascii=False))这样一来问题就解决了,中文也正确显式原创 2020-06-18 14:14:04 · 3151 阅读 · 0 评论 -
python引入绝对路径
问题:当前文件位置为:/home/xmdd/tmp/project/main.py我想要引入的文件位置为:/home/xl/project/ChineseNER/tensorflow/train.py解决:用sys手动添加python搜索包的路径就可以了,具体代码如下:import syssys.path.append(r'/home/xl/project/ChineseNER/tensorflow')引入之后,就可以引入改路径下的python文件中的方法了,python自动去搜索。原创 2020-06-18 00:07:48 · 952 阅读 · 0 评论 -
python中列表转为路径
python中string也可以看做list,并调用list的方法,但是一旦调用原本的string就会变为[ .. , .. , ..]的格式,要想再拼接为string的形式就需要用for进行拼接,当然这个过程中也可以做很多的事情,比如路径修改。out_path = 'input_file=/home/xl/project/ChineseNER/tensorflow/test1.txt'split_list = output_path.split('/')# 去掉最后的test1.txtfile原创 2020-06-18 00:00:26 · 2221 阅读 · 0 评论 -
tensorflow报错ValueError: Variable ... already exists, disallowed.
报错信息寻找解决方案因为保存了上次运行结束的变量,所以报错already exists,看网上的解决方案都是说将如下代码增加在代码开头tf.reset_default_graph()问题但问题来了,这个开头指的是????????????好尴尬啊,我尝试放了一个我觉得开头的问题,结果不对,当然最后是解决了,方法是没错的,但是要根据具体的代码放到不同的位置解决首先肯定是踩坑了,我直接在函数定义前后加,都是不对的,因为我是封装成了一个类给其他类调用的,因此下面两个是错误❌的:而在别的类中调原创 2020-06-17 23:37:38 · 8169 阅读 · 8 评论 -
python中的元组与json类型转化问题
问题描述下午一个同事问我一个问题,为啥写入的是元组,得到的结果是列表呢?我把代码看了好几遍,都没找出来所有然来,后来才知道原来是因为进行了文件读写,写入文件再读取的时候转化为了json,而python中的tuple转化为json就成了arrary,这是正确的,就算返回给前端,前端也只有array,而没有tuple,整个程序其实是没有错误的。关于python中的数据类型转化为json数据类型这个问题其实老早之前就知道,但是之前觉得这个表格瞅一眼以后需要时候再查就可以了,但是谁知道今天压根就没想起来。py原创 2020-06-17 23:04:13 · 3623 阅读 · 0 评论 -
redis查看键(key)、字段(field)、和值(value)
查看所有的keykeys *查看指定key所有的字段和值hgetall project查看指定key的所有字段hkeys project查看指定key的field的值hget project demo1原创 2020-06-15 22:56:16 · 36561 阅读 · 1 评论 -
tornado出现object has no attribute错误
tornado object has no attribute错误错误描述下午程序运行时出现了一个匪夷所思的报错,说我实例化的pm类的对象没有pm_delProject方法,反复查验好几遍,确认是没有问题的,这种情况下也只能搜一搜Google了,结果大都是python关键字冲突的,但我这里明显不是这个原因啊。探明真相没有无缘无故的报错,但报错信息可能是有误导性的。——轩灵大大程序逻辑是没有问题的,反复排查,认真校对语法,结果发现是: app = tornado.web.Applicati原创 2020-06-15 22:34:43 · 1750 阅读 · 1 评论 -
tensorflow版本与python版本不相容的问题
最近在服务器把python3装成了最新的3.8.3然后问题就来了…tensorflow无法正常执行了,看了下官网才知道,原来每个tensorflow支持的python版本是不同的,最主要的是现在还没有支持3.8.3的????????哭撩????????python与tensorflow版本的对应CPUGPU...原创 2020-06-14 23:52:46 · 7204 阅读 · 1 评论 -
python3.8.3版本报错ModuleNotFoundError: No module named _ctypes
报错信息ModuleNotFoundError: No module named '_ctypes'原因python3.7以上版本需要一个新的依赖包libffi-devel,centos系统环境中缺乏这个包解决(1)下载yum install libffi-devel -y包yum install libffi-devel -y(2)在python3的安装目录下重新编译:make install结果一切都正常了。...原创 2020-06-14 23:19:40 · 5716 阅读 · 1 评论 -
python3安装——无冲突python2
linux和mac系统默认都是安装了python2的,并且pip的版本默认也是绑定python2的,若是希望在不冲突python2的情况下安装python3,并且使pip的版本互不影响,那就需要正确的安装方式了。由于在个人服务器、个人mac、单位服务器多次在保证不冲突python2的情况下安装python3,索性做个记录。下载压缩包wget https://www.python.org/ftp/python/3.8.3/Python-3.8.3.tgz解压到指定位置一般放在/usr/lcoal下原创 2020-06-14 17:47:30 · 314 阅读 · 1 评论 -
python使用tornado开发Web服务器
代码#-*- coding:utf-8 -*-import tornado.webimport tornado.ioloopimport tornado.httpserverimport tornado.optionsfrom tornado.options import define, optionsfrom mm import mmdefine('port', type=int, default=8000, help='服务器端口')# 定义接口class into_Handl原创 2020-06-11 17:04:08 · 435 阅读 · 0 评论 -
使用bert-as-service简单快速生成词向量
下载依赖:pip install bert-serving-serverpip install bert-serving-client下载预训练好的中文模型:中文模型地址启动bert-serving-start$ cd /usr/local/bin# 替换为自己的地址$ bert-serving-start -model_dir /bertdemo/chinese_L-12_H-768_A-12编写脚本# train.pyfrom bert_serving.client im原创 2020-06-11 11:32:36 · 1505 阅读 · 0 评论 -
python批量读取目录中的文件一次写入一个文件中
读取目录中所有文件任务描述将目录中所有的.txt文件中(10个文件共11万行数据)的内容写入到all.txt中,肯定是不能粘贴复制的,那就用程序来解决吧。代码import os# 打开写入文件file = open('all.txt','a',True,encoding='utf-8')# 获取当前路径pwd = os.getcwd()# 随机遍历读取目录中的文件files = os.walk(pwd)for path, dir_list, file_list in files:原创 2020-06-11 10:51:46 · 1196 阅读 · 0 评论 -
Python实用技巧(实际工作经验)
Python实用技巧(实际工作经验)去除文件名后缀file_name = 'e1.csv'fileName = os.path.splitext(file_name)[0] # e1遍历文件夹中的文件# 在目录树中游走输出在目录中的文件名configPathString = os.walk(configPath.import_path)for path, dir_list, file_list in configPathString: # 根据文件名进行排序 file_list.s原创 2020-06-10 22:22:40 · 240 阅读 · 0 评论