当前位置: 首页 > news >正文

如何让网站自适应/web3域名注册

如何让网站自适应,web3域名注册,河南网站seo设计,张家港专业做网站说明 如果需要用到这些知识却没有掌握,则会让人感到沮丧,也可能导致面试被拒。无论是花几天时间“突击”,还是利用零碎的时间持续学习,在数据结构上下点功夫都是值得的。那么Python 中有哪些数据结构呢?列表、字典、集…

说明

        如果需要用到这些知识却没有掌握,则会让人感到沮丧,也可能导致面试被拒。无论是花几天时间“突击”,还是利用零碎的时间持续学习,在数据结构上下点功夫都是值得的。那么Python 中有哪些数据结构呢?列表、字典、集合,还有……栈?Python 有栈吗?本系列文章将给出详细拼图。
 

第1章:ADT抽象数据类型,定义数据和其操作

什么是ADT: 抽象数据类型(Abstract Data Type),学过数据结构的应该都知道。

如何为 ADT 选择数据结构

  1. 数据结构是否满足 ADT 域指定的存储要求?
  2. 数据结构是否提供数据访问和操作功能来完全实现 ADT?
  3. 高效执行?基于复杂性分析。

        下边代码是个简单的示例,比如实现一个简单的Bag类,先定义其具有的操作,然后我们再用类的magic method来实现这些方法:

class Bag:"""constructor: 构造函数sizecontainsappendremoveiter"""def __init__(self):self._items = list()def __len__(self):return len(self._items)def __contains__(self, item):return item in self._itemsdef add(self, item):self._items.append(item)def remove(self, item):assert item in self._items, 'item must in the bag'return self._items.remove(item)def __iter__(self):return _BagIterator(self._items)class _BagIterator:""" 注意这里实现了迭代器类 """def __init__(self, seq):self._bag_items = seqself._cur_item = 0def __iter__(self):return selfdef __next__(self):if self._cur_item < len(self._bag_items):item = self._bag_items[self._cur_item]self._cur_item += 1return itemelse:raise StopIterationb = Bag()
b.add(1)
b.add(2)
for i in b:     # for使用__iter__构建,用__next__迭代print(i)"""
# for 语句等价于
i = b.__iter__()
while True:try:item = i.__next__()print(item)except StopIteration:break
"""

第2章:array 和 list

        array: 定长,操作有限,但是节省内存;貌似我的生涯中还没用过,不过python3.5中我试了确实有array类,可以用import array直接导入

        list: 会预先分配内存,操作丰富,但是耗费内存。我用sys.getsizeof做了实验。我个人理解很类似C++ STL里的vector,是使用最频繁的数据结构。

  • list.append: 如果之前没有分配够内存,会重新开辟新区域,然后复制之前的数据,复杂度退化
  • list.insert: 会移动被插入区域后所有元素,O(n)
  • list.pop: pop不同位置需要的复杂度不同pop(0)是O(1)复杂度,pop()首位O(n)复杂度
  • list[]: slice操作copy数据(预留空间)到另一个list

来实现一个array的ADT:

import ctypesclass Array:def __init__(self, size):assert size > 0, 'array size must be > 0'self._size = sizePyArrayType = ctypes.py_object * sizeself._elements = PyArrayType()self.clear(None)def __len__(self):return self._sizedef __getitem__(self, index):assert index >= 0 and index < len(self), 'out of range'return self._elements[index]def __setitem__(self, index, value):assert index >= 0 and index < len(self), 'out of range'self._elements[index] = valuedef clear(self, value):""" 设置每个元素为value """for i in range(len(self)):self._elements[i] = valuedef __iter__(self):return _ArrayIterator(self._elements)class _ArrayIterator:def __init__(self, items):self._items = itemsself._idx = 0def __iter__(self):return selfdef __next__(self):if self._idex < len(self._items):val = self._items[self._idx]self._idex += 1return valelse:raise StopIteration

2.1 二维数组Two-Demensional Arrays

class Array2D:""" 要实现的方法Array2D(nrows, ncols):    constructornumRows()numCols()clear(value)getitem(i, j)setitem(i, j, val)"""def __init__(self, numrows, numcols):self._the_rows = Array(numrows)     # 数组的数组for i in range(numrows):self._the_rows[i] = Array(numcols)@propertydef numRows(self):return len(self._the_rows)@propertydef NumCols(self):return len(self._the_rows[0])def clear(self, value):for row in self._the_rows:row.clear(value)def __getitem__(self, ndx_tuple):    # ndx_tuple: (x, y)assert len(ndx_tuple) == 2row, col = ndx_tuple[0], ndx_tuple[1]assert (row >= 0 and row < self.numRows andcol >= 0 and col < self.NumCols)the_1d_array = self._the_rows[row]return the_1d_array[col]def __setitem__(self, ndx_tuple, value):assert len(ndx_tuple) == 2row, col = ndx_tuple[0], ndx_tuple[1]assert (row >= 0 and row < self.numRows andcol >= 0 and col < self.NumCols)the_1d_array = self._the_rows[row]the_1d_array[col] = value

2.2 The Matrix ADT, m行,n列。这个最好用还是用pandas处理矩阵,自己实现比较*疼

class Matrix:""" 最好用pandas的DataFrameMatrix(rows, ncols): constructornumCols()getitem(row, col)setitem(row, col, val)scaleBy(scalar): 每个元素乘scalartranspose(): 返回transpose转置add(rhsMatrix):    size must be the samesubtract(rhsMatrix)multiply(rhsMatrix)"""def __init__(self, numRows, numCols):self._theGrid = Array2D(numRows, numCols)self._theGrid.clear(0)@propertydef numRows(self):return self._theGrid.numRows@propertydef NumCols(self):return self._theGrid.numColsdef __getitem__(self, ndxTuple):return self._theGrid[ndxTuple[0], ndxTuple[1]]def __setitem__(self, ndxTuple, scalar):self._theGrid[ndxTuple[0], ndxTuple[1]] = scalardef scaleBy(self, scalar):for r in range(self.numRows):for c in range(self.numCols):self[r, c] *= scalardef __add__(self, rhsMatrix):assert (rhsMatrix.numRows == self.numRows andrhsMatrix.numCols == self.numCols)newMartrix = Matrix(self.numRows, self.numCols)for r in range(self.numRows):for c in range(self.numCols):newMartrix[r, c] = self[r, c] + rhsMatrix[r, c]

第3章:Sets 和 Maps

除了list之外,最常用的应该就是python内置的set和dict了。

3.1 sets ADT

集合是一个容器,它存储给定可比域中唯一值的集合,其中存储的值没有特定的顺序。

class Set:""" 使用list实现set ADTSet()length()contains(element)add(element)remove(element)equals(element)isSubsetOf(setB)union(setB)intersect(setB)difference(setB)iterator()"""def __init__(self):self._theElements = list()def __len__(self):return len(self._theElements)def __contains__(self, element):return element in self._theElementsdef add(self, element):if element not in self:self._theElements.append(element)def remove(self, element):assert element in self, 'The element must be set'self._theElements.remove(element)def __eq__(self, setB):if len(self) != len(setB):return Falseelse:return self.isSubsetOf(setB)def isSubsetOf(self, setB):for element in self:if element not in setB:return Falsereturn Truedef union(self, setB):newSet = Set()newSet._theElements.extend(self._theElements)for element in setB:if element not in self:newSet._theElements.append(element)return newSet

3.2 Maps or Dict: 键值对,python内部采用hash实现。

class Map:""" Map ADT list implementionMap()length()contains(key)add(key, value)remove(key)valudOf(key)iterator()"""def __init__(self):self._entryList = list()def __len__(self):return len(self._entryList)def __contains__(self, key):ndx = self._findPosition(key)return ndx is not Nonedef add(self, key, value):ndx = self._findPosition(key)if ndx is not None:self._entryList[ndx].value = valuereturn Falseelse:entry = _MapEntry(key, value)self._entryList.append(entry)return Truedef valueOf(self, key):ndx = self._findPosition(key)assert ndx is not None, 'Invalid map key'return self._entryList[ndx].valuedef remove(self, key):ndx = self._findPosition(key)assert ndx is not None, 'Invalid map key'self._entryList.pop(ndx)def __iter__(self):return _MapIterator(self._entryList)def _findPosition(self, key):for i in range(len(self)):if self._entryList[i].key == key:return ireturn Noneclass _MapEntry:    # or use collections.namedtuple('_MapEntry', 'key,value')def __init__(self, key, value):self.key = keyself.value = value

3.3 The multiArray ADT, 多维数组,一般是使用一个一维数组模拟,然后通过计算下标获取元素

class MultiArray:""" row-major or column-marjor ordering, this is row-major orderingMultiArray(d1, d2, ...dn)dims():   the number of dimensionslength(dim): the length of given array dimensionclear(value)getitem(i1, i2, ... in), index(i1,i2,i3) = i1*(d2*d3) + i2*d3 + i3setitem(i1, i2, ... in)计算下标:index(i1,i2,...in) = i1*f1 + i2*f2 + ... + i(n-1)*f(n-1) + in*1"""def __init__(self, *dimensions):# Implementation of MultiArray ADT using a 1-D # array,数组的数组的数组。。。assert len(dimensions) > 1, 'The array must have 2 or more dimensions'self._dims = dimensions# Compute to total number of elements in the arraysize = 1for d in dimensions:assert d > 0, 'Dimensions must be > 0'size *= d# Create the 1-D array to store the elementsself._elements = Array(size)# Create a 1-D array to store the equation factorsself._factors = Array(len(dimensions))self._computeFactors()@propertydef numDims(self):return len(self._dims)def length(self, dim):assert dim > 0 and dim < len(self._dims), 'Dimension component out of range'return self._dims[dim-1]def clear(self, value):self._elements.clear(value)def __getitem__(self, ndxTuple):assert len(ndxTuple) == self.numDims, 'Invalid # of array subscripts'index = self._computeIndex(ndxTuple)assert index is not None, 'Array subscript out of range'return self._elements[index]def __setitem__(self, ndxTuple, value):assert len(ndxTuple) == self.numDims, 'Invalid # of array subscripts'index = self._computeIndex(ndxTuple)assert index is not None, 'Array subscript out of range'self._elements[index] = valuedef _computeIndex(self, ndxTuple):# using the equation: i1*f1 + i2*f2 + ... + in*fnoffset = 0for j in range(len(ndxTuple)):if ndxTuple[j] < 0 or ndxTuple[j] >= self._dims[j]:return Noneelse:offset += ndexTuple[j] * self._factors[j]return offset

第4章:Algorithm Analysis

一般使用大O标记法来衡量算法的平均时间复杂度, 1 < log(n) < n < nlog(n) < n^2 < n^3 < a^n。 了解常用数据结构操作的平均时间复杂度有利于使用更高效的数据结构,当然有时候需要在时间和空间上进行衡量,有些操作甚至还会退化,比如list的append操作,如果list空间不够,会去开辟新的空间,操作复杂度退化到O(n),有时候还需要使用均摊分析(amortized)

相关文章:

用python实现基本数据结构【01/4】

说明 如果需要用到这些知识却没有掌握&#xff0c;则会让人感到沮丧&#xff0c;也可能导致面试被拒。无论是花几天时间“突击”&#xff0c;还是利用零碎的时间持续学习&#xff0c;在数据结构上下点功夫都是值得的。那么Python 中有哪些数据结构呢&#xff1f;列表、字典、集…...

Ubuntu22.04 install Kafka

kafka quickstart install kafka...

实现JSONP请求

同源策略 JavaScript 的浏览器都会使用这个策略。所谓同源是指&#xff0c;域名&#xff0c;协议&#xff0c;端口相同。 而所有非同源的请求&#xff08;即 域名&#xff0c;协议&#xff0c;端口 其中一种或多种不相同&#xff09;&#xff0c;都会被作为跨域请求。实际上请求…...

如何将安防视频监控系统/视频云存储EasyCVR平台推流到公网直播间?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、…...

使用内网负载机(Linux)执行Jmeter性能测试

一、背景 ​ 在我们工作中有时候会需要使用客户提供的内网负载机进行性能测试&#xff0c;一般在什么情况下我们需要要求客户提供内网负载机进行性能测试呢&#xff1f; 遇到公网环境下性能测试达到了带宽瓶颈。那么这时&#xff0c;我们就需要考虑在内网环境负载机下来执行我们…...

Web自动化测试进阶 —— Selenium模拟鼠标操作

鼠标操作事件 在实际的web产品测试中&#xff0c;对于鼠标的操作&#xff0c;不单单只有click()&#xff0c;有时候还要用到右击、双击、拖动等操作&#xff0c;这些操作包含在ActionChains类中。 ActionChains类中鼠标操作常用方法&#xff1a; 首先导入ActionChains类&…...

Python之函数

函数是什么&#xff1f; 函数是对程序逻辑进行结构化或过程化的一种编程方法&#xff0c;将整块代码巧妙地隔离成易于管理的小块。把重复代码放到函数中而不是进行大量的拷贝&#xff0c;这样既能节省空间&#xff0c;也有助于保持一致性&#xff1b;通常函数都是用于实现某一种…...

泛型工具类型和操作符

前言 TypeScript 内置了一些常用的工具类型。 PartialRequiredOmitPick.... 操作符 typeof typeof 操作符可以用来获取一个变量声明或对象的类型 const p {x:2,y:cm} let g:typeof p {x:3,y:ff} 这里g需要满足&#xff1a; 有x属性且值是number类型 有y属性且值是string类型…...

idea中启动maven项目报错-java: 程序包lombok.extern.slf4j不存在问题如何解决

1、 现象&#xff1a; 在springboot的maven项目启动时&#xff0c;报错&#xff1a; Error:(3, 27) java: 程序包lombok.extern.slf4j不存在 编译不报错&#xff0c;maven依赖也合适&#xff0c;项目就是无法启动 原因&#xff1a; 其实不是项目本身或者maven本身的问题&am…...

MyBatis-动态SQL

<if>标签 用于判断条件是否成立&#xff0c;使用test属性进行条件判断&#xff0c;如果条件为true&#xff0c;则拼接SQL <where>标签 where元素只会在子元素有内容的情况下插入where子句&#xff0c;而且会自动去除子句的开头的AND或OR <where><if tes…...

Swift学习内容精选(二)

Swift 类是构建代码所用的一种通用且灵活的构造体。 我们可以为类定义属性&#xff08;常量、变量&#xff09;和方法。 与其他编程语言所不同的是&#xff0c;Swift 并不要求你为自定义类去创建独立的接口和实现文件。你所要做的是在一个单一文件中定义一个类&#xff0c;系…...

类欧笔记存档

电子版&#xff1a;https://blog.csdn.net/zhangtingxiqwq/article/details/132718582...

电能计量远程抄表系统的分析及在物业的应用

安科瑞 华楠 摘 要&#xff1a;结合当前电力企业实际的发展概况&#xff0c;可知电力活动开展中对于性能可靠的电能计量及远程抄表依赖程度高&#xff0c;需要注重它们实际应用范围的扩大&#xff0c;满足电力企业长期稳定发展的实际需求。基于此&#xff0c;本文将对电能计量…...

计算机网络篇之端口

计算机网络篇之端口 文章目录 计算机网络篇之端口前言概括分类总结 前言 我们知道ip地址可以确定向哪台主机转发数据&#xff0c;但是数据要发给主机的哪个进程&#xff0c;这个时候端口就派上用场了 概括 计算机网络端口是用于区分不同应用程序或网络服务的逻辑地址&#x…...

GO语言篇之发布开源软件包

GO语言篇之发布开源软件包 文章目录 GO语言篇之发布开源软件包新建仓库拉取到本地初始化项目编写代码提交代码发布引用软件包 我们写GO语言程序的时候难免会引用第三方的软件包&#xff0c;那么你知道别人是怎么发布自己的软件包吗&#xff0c;别急&#xff0c;这篇博客教你怎么…...

Eclipse官网下载历史版本

进入官网 https://www.eclipse.org/ 进入下载页面 选择下载包 同一版本&#xff0c;又有不同类型 Eclipse IDE for Enterprise Java and Web Developers Eclipse IDE for Java Developers 任何Java开发人员必备的工具&#xff0c;包括Java IDE、Git客户端、XML编辑器、Mave…...

SCI常见词汇表达

一.被认为 is known to;it is known thatbe regarded asis characterized byis believed toit is generally acknowledged thathave been implicatedit has been shown that 二.表明 revel ; demonstrate ; appeared toreport ; considered as ; uncoverfound ; show ; impl…...

使用ref如何获取到input标签中的值

要使用 ref 获取到 input 标签中的值&#xff0c;首先需要创建一个 ref 对象并将其绑定到 input 标签上。然后&#xff0c;可以通过访问 ref 对象的 value 属性来获取标签中的值。 下面是一个示例代码&#xff1a; import React, { useRef } from react; function App() {cons…...

自定义Dynamics 365实施和发布业务解决方案 3. 开箱即用自定义

在本章中,您将开始开发SBMA会员应用程序。在开发的最初阶段,主要关注开箱即用的定制。在第2章中,我们讨论了如何创建基本解决方案的细节,在本章中,将创建作为解决方案补丁的基本自定义,并展示将解决方案添加到源代码管理和目标环境的步骤。 表单自定义 若要开始表单自定…...

python-pytorch 关于torch.load()和torch.load_state_dict()

python-pytorch 关于torch.load和torch.load_state_dict 1、关于模型保存和加载2、关于加载模型结构 最近在使用pytorch训练和加载模型时遇到了一些很玄学的问题&#xff0c;研究了一下&#xff0c;总结如下&#xff1a; 1、关于模型保存和加载 1、如果保存时使用了torch.save…...

关于批量安装多个apk

for %i in (apks地址/*.apk); do adb install %i https://www.cnblogs.com/lihongtaoya/p/15084378.html adb install -r apks地址/1.apk && adb install -r apks地址/2.apk install-multi-package - 暂时nok https://adbshell.com/commands 最新版本的platform-tool…...

【案例教学】华为云API对话机器人的魅力—体验AI垃圾分类机器人

云服务、API、SDK&#xff0c;调试&#xff0c;查看&#xff0c;我都行 阅读短文您可以学习到&#xff1a;人工智能AI自言语言的情感分析、文本分词、文本翻译 1 IntelliJ IDEA 之API插件介绍 API插件支持 VS Code IDE、IntelliJ IDEA等平台、以及华为云自研 CodeArts IDE&a…...

go基础详解2-go run test

一 go run 编译运行一个main 包&#xff08;package&#xff09;&#xff0c;常用的运行方式如下&#xff1a; go run . go run hello go run 后面接路径&#xff0c;该路径&#xff08;不含子路径&#xff09;下所有的go源文件都属于main包。 go run filename1 filename1 …...

【NVIDIA CUDA】2023 CUDA夏令营编程模型(三)

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…...

字节8年经验之谈 —— 冒烟测试、回归测试是什么?

冒烟测试&#xff08;Smoke Testing&#xff09;和回归测试&#xff08;Regression Testing&#xff09;是软件测试中常用的两种测试类型。 冒烟测试&#xff08;Smoke Testing&#xff09;&#xff1a;冒烟测试是在软件开发的早期阶段进行的一种表面级功能验证测试。它主要用…...

FP6102 20V、3A降压开关调节器芯片

FP6102 20V、3A降压开关调节器芯片 一般说明 FP6102是一种用于广泛工作电压应用领域的降压开关调节器。FP6102包括高电流P-MOSFET&#xff0c;用于将输出电压与反馈放大器进行比较的高精度参考&#xff08;0.5V&#xff09;&#xff0c;内部死时间控制器和用于控制最大占空比和…...

魔众携手ModStart上线全新模块市场,支持模板主题

ModStart模板主题 对于很多新手或者是缺乏经验的开发者来说&#xff0c;快速建站具有一定的难度&#xff0c;总是一件让人头疼的问题。 ModStart为开发者提供了一些模板主题供开发者选购使用&#xff0c;模块市场包含了丰富的模块&#xff0c;后台一键快速安装&#xff0c;让开…...

织梦CMS_V5.7任意用户密码重置漏洞复现

一、漏洞说明 织梦内容管理系统&#xff08;DeDeCMS&#xff09;以其简单、实用、开源的特点而著名。作为国内最知名的PHP开源网站管理系统&#xff0c;它在多年的发展中取得了显著进步&#xff0c;无论在功能还是易用性方面都有长足的发展。该系统广泛应用于中小型企业门户网站…...

ESP32通过ali的C LINK4.0接入aliyun阿里云

1&#xff0c;通过官网下载C SDK:进入物联网平台&#xff1a;文档和工具 2&#xff0c;选择SDK支持项目&#xff1a;系统为FreeRTOS&#xff0c;单板系统&#xff0c;勾选动态加密&#xff0c;因为测试我把所有的功能都勾选上了。 3&#xff0c;将下载下来的文件放到espSDK下组…...

Spring中使用了哪些设计模式

1、工厂模式 在各种BeanFactory以及ApplicationContext创建中都用到了。 2、模板模式 在各种BeanFactory以及ApplicationContext实现中也都用到了。 3、代理模式 Spring AOP 利用了AspectJ AOP实现的&#xff0c;AspectJ AOP底层使用了动态代理。 4、策略模式 加载资源文…...