需1求:给出N长的序列,求出TopK大的元素,使用小顶堆,heapq模块实现。
import heapq
import random
class TopkHeap(object):
def __init__(self, k):
self.k = k
self.data = []
def Push(self, elem):
if len(self.data) < self.k:[......]
需1求:给出N长的序列,求出TopK大的元素,使用小顶堆,heapq模块实现。
import heapq
import random
class TopkHeap(object):
def __init__(self, k):
self.k = k
self.data = []
def Push(self, elem):
if len(self.data) < self.k:[......]
转载自:http://www.cnblogs.com/gala/archive/2011/09/22/2184801.html
这篇文章写的很好,所以无耻的转了。。
有的时候需要用python处理二进制数据,比如,存取文件,socket操作时.这时候,可以使用python的struct模块来完成.可以用 struct来处理c语言中的结构体.
struct模块中最重要的三个函数是pack(), unpack(), calcsize()
# 按照给定的格式(fmt),把数据封装[......]
现象:使用codecs打开文件,写入UTF-8文本,正常无错误。用vim打开正常,但记事本、UE等打开乱码。
原因:一般写文本时,默认是没有BOM头的,即编辑器不知道这个文本文件是神马编码,只能智能detect,这个detect有的弱有的强,比如UE、记事本就挂了,认为是ASCII格式的,于是就乱码了。
解决方法:如果为了编辑器打开正常,可以加入BOM编码。但一定要慎重,一旦加入后,头部会增加2~3个字节,如果程序再读取,显然会出错。这个如果使用UE编辑过PHP代码抓过狂的都应该懂得[......]
在Linux下,如果用vim打开一个大文件是非常困难的,即使配置了禁用临时文件也一样。
这是因为vim默认会全部加载文件!
而有时候,我们只想去查看文件的某一行(及浏览前后),怎么办?
以前我都是组合用head和tail,现在可以用less!
less初始不加载文件任何部分,是显示到哪一屏幕再加载那几行!
1、less打开文件
并指定直接定位到某个位置!
# 直接定位到第100行
less +100g xx.log
# 定位到最后一行
less +GG x[......]
又名余弦相似度,代码如下:
import math
def cos_dist(a, b):
if len(a) != len(b):
return None
part_up = 0.0
a_sq = 0.0
b_sq = 0.0
for a1, b1 in zip(a,b):
part_up += a1*b1
a_sq += a1**2
b_sq += b1**2[......]