[10.17] Dot product of two vectors

Description

实现一个更加节约空间的存储方法存储两个向量

Solution

  1. 对于减少内存,我们可以记录连续重复的数,非常巧妙的compress算法
  2. 对于点乘,我们需要遍历并
def compress(ls):
    result, current_letter, current_count = [], None, 0
    for l in ls:
        if current_letter is None or l == current_letter:
            current_letter, current_count = l, current_count + 1
        else:
            result.append((current_count, current_letter))
            current_letter, current_count = l, 1
    return result + [(current_count, current_letter)]


def dot_product_compressed(compressed_x, compressed_y):
    def _generator(ls):
        if ls:
            for count, item in ls:
                for _ in range(count):
                    yield item
    res = 0
    for (a,b) in zip(_generator(compressed_x), _generator(compressed_y)):
        res += a*b
    return res
    
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这...
    Winterfell_Z阅读 11,442评论 0 13
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,902评论 1 32
  • 院桥初中 应燕 一、目的: 家庭环境对中学生个体素质的发展有着重大而深刻的影响。其主要方面有对性格特征、基本生活技...
    诗不在远方阅读 3,940评论 0 1
  • 围炉而食,温暖祥和。 望着碳火由黑而红,渐渐落灰,冬天的寒冷也被着一炉的碳火驱散。 围炉而食,一顿饭可以吃一刻钟,...
    BeUltraviolet阅读 3,452评论 2 6
  • 今天是2月7日星期四,全年第38天第6周,本月还剩21天。希望您在今后的日子里,不怕失败,不怀疑自己,不过分自责,...
    晓可以阅读 2,915评论 1 2

友情链接更多精彩内容