Python 子集的算法优化; 找寻一个list的所有满足特定条件的子集
我用Python3,最后一行稍微改了一下,执行了看,加上了呀
tagged_list = [[('I',0),('feel',0.2),('happy',0.8),('and',0),('excited',0.4),('today',0)],[('I',0),('feel',0),('happy',1),('and',0),('excited',1),('today',0)],[('I',0),('feel',0),('happy',1),('and',0),('excited',1),('today',0)]]d ={}for word_list in tagged_list: for (word, score) in word_list: if word in d: d[word] = d[word] + int(score) else: d[word] = d.setdefault(word, 0) + int(score)print(*map(tuple, d.items()))执行结果
('and', 0) ('today', 0) ('I', 0) ('feel', 0) ('excited', 2) ('happy', 2)
第三个就是
使用 itertools
import itertools # 有序print list(itertools.permutations([1,2,3,4],2))[(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3)] # 无序print list(itertools.combinations([1,2,3,4],2))[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
使用 itertools 呀
import itertools
# 有序
print list(itertools.permutations([1,2,3,4],2))
[(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3)]
# 无序
print list(itertools.combinations([1,2,3,4],2))
[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
戎嵇昊迪: 第一个办法,降低数据集的大小.python处理数据,如果数据结构中的数据超过2GB,通常都会很慢.如何降低数据集大小,需要修改算法.第二个办法,将数据结构采用数组array或者是numarray存贮.这样内存数量与查找效率都会提高.尽量不要使用大的dict.使用一个省内存的blist代替list 第三个办法,将数据通过共享内存,让C++扩展模块来处理.常用的是第二种办法.就是换个数据结构就可以提高效率.
昌吉回族自治州13173639388: Python怎么做最优化 - ?
戎嵇昊迪: 一、概观 scipy中的optimize子包中提供了常用的最优化算法函数实现.我们可以直接调用这些函数完成我们的优化问题.optimize中函数最典型的特点就是能够从函数名称上看出是使用了什么算法.下面optimize包中函数的e69da5e887aa...
昌吉回族自治州13173639388: 寻求最优最快的算法,快速找出某一数组中符合条件的子集(如最大的100个)?
戎嵇昊迪: 我记得这个再算法分析里面我学过,多种排序方法里面,时空效率最高的应该是堆排序 堆排序的最坏时间复杂度为O(nlgn).堆排序的平均性能较接近于最坏性能. 由于建初始堆所需的比较次数较多,所以堆排序不适宜于记录数较少的文件. ...
昌吉回族自治州13173639388: python 循环内要处理大量数据时怎么优化 - ?
戎嵇昊迪: 先尝试优化程序的时间复杂度,寻找更有效的算法 确保了算法复杂度在可接受范围之内后,开始进行常数优化,以下是Python优化的几个小技巧:1. 实测表明,for语句一般比while语句效率更高2. 同样实测表明,xrange一般比range要高效3. 如果要存储动态数据(即有可能频繁变动的数据)少用list和str,多用dict4. 实测表明,两个str的连接效率从高到低+=,join,+ 多个str的连接效率从高到低join,+=,+5. 尽可能使用列表解析表达式和生成器表达式代替循环一遍来构建list6. 避免使用global关键字,无论是从代码效率还是可移植性的方面考虑
昌吉回族自治州13173639388: python分类算法有哪些 - ?
戎嵇昊迪: 十种常见排序算法一般分为以下几种: (1)非线性时间比较类排序: a. 交换类排序(快速排序、冒泡排序) b. 插入类排序(简单插入排序、希尔排序) c. 选择类排序(简单选择排序、堆排序) d. 归并排序(二路归并排序、多路归并排序) ...
昌吉回族自治州13173639388: 试用递归法编写python程序实现折半查找算法 - ?
戎嵇昊迪: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17defbinary_search(A,value):len_A=len(A)mid_i =len_A/2ifmid_i==0:returnA[mid_i] ifA[mid_i]>value:binary_search(A[0:mid_i],value)else:binary_search(A[mid_i:len_A],value) if__name__=='__main...
昌吉回族自治州13173639388: 编写一个算法(最好是python),找出已知表列中不同的数字.求步骤,比如第一步是set,numbres set(n) - ?
戎嵇昊迪: 用字典 list1=['1','2','2','2','3','4'] fun(list1): datadic=dict() for element in list1: datadic[element]=element return datadic.keys() list2=fun(list1)
昌吉回族自治州13173639388: web后端开发面试应该注意些什么 - ?
戎嵇昊迪: web后端开发面试应该注意些什么?有哪些题目是值得我们注意的?下面就让小编告诉你:面试这几家公司所遇到的面试/笔试题,目前还能记住的如下.虽然可能绝大部分都是基础,但希望大家不要只是看看就过去了,最好还是假装你被问到这...
昌吉回族自治州13173639388: 对python编程者来说最应掌握什么算法 - ?
戎嵇昊迪: 算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通常明显比其他Ο(n log n) 算法更...
昌吉回族自治州13173639388: 请用Python实现CMAR算法 - ?
戎嵇昊迪: 1.将开始节点放入开放列表(开始节点的F和G值都视为0);2.重复一下步骤:i.在开放列表中查找具有最小F值的节点,并把查找到的节点作为当前节点; ii.把当前节点从开放列表删除, 加入到封闭列表; iii.对当前节点相邻的每一个节点依次执...