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

全景网站如何建设建设银行网站的目的

全景网站如何建设,建设银行网站的目的,比较好网站设计公司,高港区企业网站建设5. 数据结构本章将详细介绍一些您已经了解的内容#xff0c;并添加了一些新内容。5.1. 列表的更多特性列表数据类型还有很多的方法。这里是列表对象方法的清单#xff1a;list.append(x)在列表的末尾添加一个元素。相当于 a[len(a):] [x] 。list.extend(iterable)使用可迭代…5. 数据结构本章将详细介绍一些您已经了解的内容并添加了一些新内容。5.1. 列表的更多特性列表数据类型还有很多的方法。这里是列表对象方法的清单list.append(x)在列表的末尾添加一个元素。相当于 a[len(a):] [x] 。list.extend(iterable)使用可迭代对象中的所有元素来扩展列表。相当于 a[len(a):] iterable 。list.insert(i, x)在给定的位置插入一个元素。第一个参数是要插入的元素的索引所以 a.insert(0, x) 插入列表头部 a.insert(len(a), x) 等同于 a.append(x) 。list.remove(x)移除列表中第一个值为 x 的元素。如果没有这样的元素则抛出 ValueError 异常。list.pop([i])删除列表中给定位置的元素并返回它。如果没有给定位置a.pop() 将会删除并返回列表中的最后一个元素。( 方法签名中 i 两边的方括号表示这个参数是可选的而不是要你输入方括号。你会在 Python 参考库中经常看到这种表示方法)。list.clear()删除列表中所有的元素。相当于 del a[:] 。list.index(x[, start[, end]])返回列表中第一个值为 x 的元素的从零开始的索引。如果没有这样的元素将会抛出 ValueError 异常。可选参数 start 和 end 是切片符号用于将搜索限制为列表的特定子序列。返回的索引是相对于整个序列的开始计算的而不是 start 参数。list.count(x)返回元素 x 在列表中出现的次数。list.sort(keyNone, reverseFalse)对列表中的元素进行排序(参数可用于自定义排序解释请参见 sorted())。list.reverse()反转列表中的元素。list.copy()返回列表的一个浅拷贝。相当于 a[:] 。列表方法示例fruits [orange, apple, pear, banana, kiwi, apple, banana]fruits.count(apple)2fruits.count(tangerine)0fruits.index(banana)3fruits.index(banana, 4) # Find next banana starting a position 46fruits.reverse()fruits[banana, apple, kiwi, banana, pear, apple, orange]fruits.append(grape)fruits[banana, apple, kiwi, banana, pear, apple, orange, grape]fruits.sort()fruits[apple, apple, banana, banana, grape, kiwi, orange, pear]fruits.pop()pear你可能已经注意到像 insert remove 或者 sort 方法只修改列表没有打印出返回值——它们返回默认值 None 。[1] 这是Python中所有可变数据结构的设计原则。5.1.1. 列表作为栈使用列表方法使得列表作为堆栈非常容易最后一个插入最先取出(“后进先出”)。要添加一个元素到堆栈的顶端使用 append() 。要从堆栈顶部取出一个元素使用 pop() 不用指定索引。例如stack [3, 4, 5]stack.append(6)stack.append(7)stack[3, 4, 5, 6, 7]stack.pop()7stack[3, 4, 5, 6]stack.pop()6stack.pop()5stack[3, 4]5.1.2. 列表作为队列使用列表也可以用作队列其中先添加的元素被最先取出 (“先进先出”)然而列表用作这个目的相当低效。因为在列表的末尾添加和弹出元素非常快但是在列表的开头插入或弹出元素却很慢 (因为所有的其他元素都必须移动一位)。若要实现一个队列 collections.deque 被设计用于快速地从两端操作。例如 from collections import dequequeue deque([Eric, John, Michael])queue.append(Terry) # Terry arrivesqueue.append(Graham) # Graham arrivesqueue.popleft() # The first to arrive now leavesEricqueue.popleft() # The second to arrive now leavesJohnqueue # Remaining queue in order of arrivaldeque([Michael, Terry, Graham])5.1.3. 列表推导式列表推导式提供了一个更简单的创建列表的方法。常见的用法是把某种操作应用于序列或可迭代对象的每个元素上然后使用其结果来创建列表或者通过满足某些特定条件元素来创建子序列。例如假设我们想创建一个平方列表像这样squares [] for x in range(10):... squares.append(x**2)...squares[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]注意这里创建(或被重写)的名为 x 的变量在for循环后仍然存在。我们可以计算平方列表的值而不会产生任何副作用squares list(map(lambda x: x**2, range(10)))或者等价于squares [x**2 for x in range(10)]上面这种写法更加简洁易读。列表推导式的结构是由一对方括号所包含的以下内容一个表达式后面跟一个 for 子句然后是零个或多个 for或 if 子句。 其结果将是一个新列表由对表达式依据后面的 for 和 if 子句的内容进行求值计算而得出。 举例来说以下列表推导式会将两个列表中不相等的元素组合起来:[(x, y) for x in [1,2,3] for y in [3,1,4] if x ! y][(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]而它等价于combs [] for x in [1,2,3]:... for y in [3,1,4]:... if x ! y:... combs.append((x, y))...combs[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]注意在上面两个代码片段中 for 和 if 的顺序是相同的。如果表达式是一个元组(例如上面的 (x, y))那么就必须加上括号vec [-4, -2, 0, 2, 4]# create a new list with the values doubled[x*2 for x in vec][-8, -4, 0, 4, 8]# filter the list to exclude negative numbers[x for x in vec if x 0][0, 2, 4]# apply a function to all the elements[abs(x) for x in vec][4, 2, 0, 2, 4]# call a method on each elementfreshfruit [ banana, loganberry , passion fruit ][weapon.strip() for weapon in freshfruit][banana, loganberry, passion fruit]# create a list of 2-tuples like (number, square)[(x, x**2) for x in range(6)][(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25)]# the tuple must be parenthesized, otherwise an error is raised[x, x**2 for x in range(6)]File , line 1, in [x, x**2 for x in range(6)]^SyntaxError: invalid syntax# flatten a list using a listcomp with two forvec [[1,2,3], [4,5,6], [7,8,9]][num for elem in vec for num in elem][1, 2, 3, 4, 5, 6, 7, 8, 9]列表推导式可以使用复杂的表达式和嵌套函数 from math import pi[str(round(pi, i)) for i in range(1, 6)][3.1, 3.14, 3.142, 3.1416, 3.14159]5.1.4. 嵌套的列表推导式列表推导式中的初始表达式可以是任何表达式包括另一个列表推导式。考虑下面这个 3x4的矩阵它由3个长度为4的列表组成matrix [... [1, 2, 3, 4],... [5, 6, 7, 8],... [9, 10, 11, 12],...]下面的列表推导式将交换其行和列[[row[i] for row in matrix] for i in range(4)][[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]如上节所示嵌套的列表推导式是基于跟随其后的 for 进行求值的所以这个例子等价于:transposed [] for i in range(4):... transposed.append([row[i] for row in matrix])...transposed[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]反过来说也等价于transposed [] for i in range(4):... # the following 3 lines implement the nested listcomp... transposed_row []... for row in matrix:... transposed_row.append(row[i])... transposed.append(transposed_row)...transposed[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]实际应用中你应该会更喜欢使用内置函数去组成复杂的流程语句。 zip() 函数将会很好地处理这种情况list(zip(*matrix))[(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]关于本行中星号的详细说明参见 解包参数列表。5.2. del 语句有一种方式可以从列表按照给定的索引而不是值来移除一个元素: 那就是 del 语句。 它不同于会返回一个值的 pop() 方法。 del 语句也可以用来从列表中移除切片或者清空整个列表(我们之前用过的方式是将一个空列表赋值给指定的切片)。 例如:a [-1, 1, 66.25, 333, 333, 1234.5] del a[0]a[1, 66.25, 333, 333, 1234.5] del a[2:4]a[1, 66.25, 1234.5] del a[:]a[]del 也可以被用来删除整个变量 del a此后再引用 a 时会报错(直到另一个值被赋给它)。我们会在后面了解到 del 的其他用法。5.3. 元组和序列我们看到列表和字符串有很多共同特性例如索引和切片操作。他们是 序列 数据类型(参见 序列类型 --- list, tuple, range)中的两种。随着 Python 语言的发展其他的序列类型也会被加入其中。这里介绍另一种标准序列类型: 元组。一个元组由几个被逗号隔开的值组成例如t 12345, 54321, hello!t[0]12345t(12345, 54321, hello!)# Tuples may be nested:...u t, (1, 2, 3, 4, 5)u((12345, 54321, hello!), (1, 2, 3, 4, 5))# Tuples are immutable:...t[0] 88888Traceback (most recent call last):File , line 1, in TypeError: tuple object does not support item assignment# but they can contain mutable objects:...v ([1, 2, 3], [3, 2, 1])v([1, 2, 3], [3, 2, 1])如你所见元组在输出时总是被圆括号包围的以便正确表示嵌套元组。输入时圆括号可有可无不过经常会是必须的(如果这个元组是一个更大的表达式的一部分)。给元组中的一个单独的元素赋值是不允许的当然你可以创建包含可变对象的元组例如列表。虽然元组可能看起来与列表很像但它们通常是在不同的场景被使用并且有着不同的用途。元组是 immutable(不可变的)其序列通常包含不同种类的元素并且通过解包(这一节下面会解释)或者索引来访问(如果是 namedtuples 的话甚至还可以通过属性访问)。列表是 mutable (可变的)并且列表中的元素一般是同种类型的并且通过迭代访问。一个特殊的问题是构造包含0个或1个元素的元组为了适应这种情况语法有一些额外的改变。空元组可以直接被一对空圆括号创建含有一个元素的元组可以通过在这个元素后添加一个逗号来构建(圆括号里只有一个值的话不够明确)。丑陋但是有效。例如empty ()singleton hello, # len(empty)0len(singleton)1singleton(hello,)语句 t 12345, 54321, hello! 是 元组打包 的一个例子值 12345, 54321 和 hello! 被打包进元组。其逆操作也是允许的x, y, z t这被称为 序列解包 也是很恰当的因为解包操作的等号右侧可以是任何序列。序列解包要求等号左侧的变量数与右侧序列里所含的元素数相同。注意可变参数其实也只是元组打包和序列解包的组合。5.4. 集合Python也包含有 集合 类型。集合是由不重复元素组成的无序的集。它的基本用法包括成员检测和消除重复元素。集合对象也支持像 联合交集差集对称差分等数学运算。花括号或 set() 函数可以用来创建集合。注意要创建一个空集合你只能用 set() 而不能用 {}因为后者是创建一个空字典这种数据结构我们会在下一节进行讨论。以下是一些简单的示例basket {apple, orange, apple, pear, orange, banana}print(basket) # show that duplicates have been removed{orange, banana, pear, apple}orange in basket # fast membership testingTruecrabgrass in basketFalse# Demonstrate set operations on unique letters from two words...a set(abracadabra)b set(alacazam)a # unique letters in a{a, r, b, c, d}a - b # letters in a but not in b{r, d, b}a | b # letters in a or b or both{a, c, r, d, b, m, z, l}a b # letters in both a and b{a, c}a ^ b # letters in a or b but not both{r, d, b, m, z, l}类似于 列表推导式集合也支持推导式形式a {x for x in abracadabra if x not in abc}a{r, d}5.5. 字典另一个非常有用的 Python 內置数据类型是 字典 (参见 映射类型 --- dict)。字典在其他语言里可能会被叫做 联合内存 或 联合数组。与以连续整数为索引的序列不同字典是以 关键字 为索引的关键字可以是任意不可变类型通常是字符串或数字。如果一个元组只包含字符串、数字或元组那么这个元组也可以用作关键字。但如果元组直接或间接地包含了可变对象那么它就不能用作关键字。列表不能用作关键字因为列表可以通过索引、切片或 append() 和 extend() 之类的方法来改变。理解字典的最好方式就是将它看做是一个 键: 值 对的集合键必须是唯一的(在一个字典中)。一对花括号可以创建一个空字典{} 。另一种初始化字典的方式是在一对花括号里放置一些以逗号分隔的键值对而这也是字典输出的方式。字典主要的操作是使用关键字存储和解析值。也可以用 del 来删除一个键值对。如果你使用了一个已经存在的关键字来存储值那么之前与这个关键字关联的值就会被遗忘。用一个不存在的键来取值则会报错。对一个字典执行 list(d) 将返回包含该字典中所有键的列表按插入次序排列 (如需其他排序则要使用 sorted(d))。要检查字典中是否存在一个特定键可使用 in 关键字。以下是使用字典的一些简单示例tel {jack: 4098, sape: 4139}tel[guido] 4127tel{jack: 4098, sape: 4139, guido: 4127}tel[jack]4098 del tel[sape]tel[irv] 4127tel{jack: 4098, guido: 4127, irv: 4127}list(tel)[jack, guido, irv]sorted(tel)[guido, irv, jack]guido in telTruejack not in telFalsedict() 构造函数可以直接从键值对序列里创建字典。dict([(sape, 4139), (guido, 4127), (jack, 4098)]){sape: 4139, guido: 4127, jack: 4098}此外字典推导式可以从任意的键值表达式中创建字典{x: x**2 for x in (2, 4, 6)}{2: 4, 4: 16, 6: 36}当关键字是简单字符串时有时直接通过关键字参数来指定键值对更方便dict(sape4139, guido4127, jack4098){sape: 4139, guido: 4127, jack: 4098}5.6. 循环的技巧当在字典中循环时用 items() 方法可将关键字和对应的值同时取出knights {gallahad: the pure, robin: the brave} for k, v in knights.items():... print(k, v)...gallahad the purerobin the brave当在序列中循环时用 enumerate() 函数可以将索引位置和其对应的值同时取出 for i, v in enumerate([tic, tac, toe]):... print(i, v)...0 tic1 tac2 toe当同时在两个或更多序列中循环时可以用 zip() 函数将其内元素一一匹配。questions [name, quest, favorite color]answers [lancelot, the holy grail, blue] for q, a in zip(questions, answers):... print(What is your {0}? It is {1}..format(q, a))...What is your name? It is lancelot.What is your quest? It is the holy grail.What is your favorite color? It is blue.当逆向循环一个序列时先正向定位序列然后调用 reversed() 函数 for i in reversed(range(1, 10, 2)):... print(i)...97531如果要按某个指定顺序循环一个序列可以用 sorted() 函数它可以在不改动原序列的基础上返回一个新的排好序的序列basket [apple, orange, apple, pear, orange, banana] for f in sorted(set(basket)):... print(f)...applebananaorangepear有时可能会想在循环时修改列表内容一般来说改为创建一个新列表是比较简单且安全的 import mathraw_data [56.2, float(NaN), 51.7, 55.3, 52.5, float(NaN), 47.8]filtered_data [] for value in raw_data:... if not math.isnan(value):... filtered_data.append(value)...filtered_data[56.2, 51.7, 55.3, 52.5, 47.8]5.7. 深入条件控制while 和 if 条件句中可以使用任意操作而不仅仅是比较操作。比较操作符 in 和 not in 校验一个值是否在(或不在)一个序列里。操作符 is 和 is not 比较两个对象是不是同一个对象这只跟像列表这样的可变对象有关。所有的比较操作符都有相同的优先级且这个优先级比数值运算符低。比较操作可以传递。例如 a b c 会校验是否 a 小于 b 并且 b 等于 c。比较操作可以通过布尔运算符 and 和 or 来组合并且比较操作(或其他任何布尔运算)的结果都可以用 not 来取反。这些操作符的优先级低于比较操作符在它们之中not 优先级最高 or 优先级最低因此 A and not B orC 等价于 (A and (not B)) or C。和之前一样你也可以在这种式子里使用圆括号。布尔运算符 and 和 or 也被成为 短路 运算符它们的参数从左至右解析一旦可以确定结果解析就会停止。例如如果 A 和 C 为真而 B 为假那么 A and B and C 不会解析 C。当作用于普通值而非布尔值时短路操作符的返回值通常是最后一个变量。也可以把比较操作或者逻辑表达式的结果赋值给一个变量例如string1, string2, string3 , Trondheim, Hammer Dancenon_null string1 or string2 or string3non_nullTrondheim注意 Python 与 C 不同赋值操作不能发生在表达式内部。C程序员可能会对此抱怨但它避免了一类C程序中常见的错误想在表达式中写 时却写成了 。5.8. 序列和其它类型的比较序列对象可以与相同类型的其他对象比较。它们使用 字典顺序 进行比较首先比较两个序列的第一个元素如果不同那么这就决定了比较操作的结果。如果它们相同就再比较每个序列的第二个元素以此类推直到有一个序列被耗尽。如果要比较的两个元素本身就是相同类型的序列那么就递归进行字典顺序比较。如果两个序列中所有的元素都相等那么我们认为这两个序列相等。如果一个序列是另一个序列的初始子序列那么短序列就小于另一个。字典顺序对字符串来说是使用单字符的 Unicode 码的顺序。下面是同类型序列之间比较的例子(1, 2, 3) (1, 2, 4)[1, 2, 3] [1, 2, 4]ABC C Pascal Python(1, 2, 3, 4) (1, 2, 4)(1, 2) (1, 2, -1)(1, 2, 3) (1.0, 2.0, 3.0)(1, 2, (aa, ab)) (1, 2, (abc, a), 4)注意对不同类型对象来说只要待比较对象提供了合适的比较方法就可以使用 和 来比较。例如混合数值类型是通过他们的数值进行比较的所以 0 等于 0.0等等。否则解释器将抛出一个 TypeError 异常而不是随便给出一个结果。别的语言可能会返回一个可变对象他们允许方法连续执行例如 d-insert(a)-remove(b)-sort();。脚注
http://www.zqtcl.cn/news/988716/

相关文章:

  • 买公司的网站商城系统开发
  • 网页设计国外设计欣赏网站深夜视频在线免费
  • 做网站怎么租用服务器杭州网站建设hzyze
  • .asp 网站北京最新防疫信息
  • 网站上传用什么软件做视频教程114查询
  • 网站小图标素材网站开发需要提供哪些东西
  • 阿里巴巴国际站买家入口百度建网站多少钱
  • 为网站网站做代理怎么判wordpress 调用当前分类名称
  • 多用户网站管理系统定制网站建设与运营案例
  • 毕业设计做的网站抄袭网站开发执行文档
  • 自己做网站都要什么软件网址你懂我意思正能量不用下载
  • 网站内容的创新wordpress美食主题
  • 程序员做游戏还是做网站好雅安移动网站建设
  • wordpress伪静态大学seo诊断网站免费诊断平台
  • 企业网站模板下载软件商务网站规划与建设心得
  • 做网站的像素是多少钱郑州公司网页
  • 北京游戏网站建设特殊符号网站
  • c 网站开发技术代注册公司要多少钱
  • 设计师参考效果图网站如何写网站建设实验结果分析
  • 网站备案 营业执照做企业网站注意些啥
  • 网站建设公司济南网络教学平台昆明理工大学
  • 原网站开发新功能世赛网站开发
  • 做一款小程序需要多少钱凡科的网站做seo比较难
  • 北京网页设计与网站建设最专业的手机网站建设
  • 做一个网站广州网站备案拍照
  • 做平面图片的网站wordpress批量添加连接
  • 做ppt哪些网站的图片质量高做电商网站需要多少时间
  • 个人网站模板源码wordpress流动公告
  • html5 手机 网站盘锦建设工程信息网站
  • 高端企业网站定制公司wordpress喜欢_赏_分享