需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代码抓过狂的都应该懂得[......]
又名余弦相似度,代码如下:
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[......]
首先是基础的,位或(|)、位与(&)、位反(~)。
然后一些比较常用的操作,有一篇很好地Wiki,请参考:
http://wiki.python.org/moin/BitManipulation
下面照抄4个最重要的
1、二进制字符串 -> 整形:
a = int("11111111", 2)
print a
后面的2表示二进制!
2、整形 -> 二进制字符串:
Python3和Python 2.6之后有内置函数b[......]