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

环保网站策划书wordpress 中文论坛插件

环保网站策划书,wordpress 中文论坛插件,国外网店平台有哪些,四川省建设厅网站证文章目录2.5 对序列使用 和 建立由列表组成的列表2.6序列的增量赋值#xff08;和#xff09;关于 的谜题补充#xff1a;extend()方法和有什么区别呢#xff1f;2.7 list.sort方法和内置函数sorted(排序)2.8 用bisect来管理已排序的序列2.8.2用bisect.insort插入元素2.9 当… 文章目录2.5 对序列使用 和 ×建立由列表组成的列表2.6序列的增量赋值和×关于 的谜题补充extend()方法和有什么区别呢2.7 list.sort方法和内置函数sorted(排序)2.8 用bisect来管理已排序的序列2.8.2用bisect.insort插入元素2.9 当列表不是首选时2.9.1 数组2.9.2内存视图2.9.3 NumPy和SciPy2.9.4 双向队列和其他的形式的队列2.5 对序列使用 和 × l [1,2,3] print(id(l)) t l*5 print(id(t))结果如图 总结 和 * 都遵循这个规律不修改原有的操作对象而是构建一个全新的序列。注意如果a*n 这个语句中序列a里面的元素是对其他可变对象的引用的话这个结果可能会出乎意料。比如你想用my_list [[]]*3 来初始化一个由列表组成的列表但是你得到的列表里面包含的3个元素其实是3个引用而且这3个引用指向同一个列表。这显然不是想要的。 建立由列表组成的列表 正确的方式1 board [[_] * 3 for i in range(3)] print(board) board[1][2] X print(board)结果如图 错误的方式1含有3个指向同一对象的引用的列表是毫无用处的。 weird_board [[_]*3] *3 print(weird_board) weird_board[1][2] 0 print(weird_board)结果如图 错误的方式2 这个和上一个错误的本质是一样的 row [ _ ]*3 board [] for i in range(3):board.append(row) print(board) board[1][2] 0 print(board)结果如图 正确的方式2 这里的等同于正确的方式1 board [] for i in range(3):row [_]*3 # 每次迭代中都新建了一个列表作为新的一行添加到boardboard.append(row) print(board) board[1][2] 0 print(board)结果如图 2.6序列的增量赋值和× 增量赋值运算符和*的表现取决于它们的第一个操作对象本次的就集中讨论。对其他的增量运算符也同样适用。 背后的特殊方法是__iadd__(用于‘就地加法’)所谓的‘就地’理解为不创建新的对象而是将原来的对象重新赋值。如果一个类没有实现这个方法的话python会退一步调用__add__. 我们考虑下面这个简单的表达式 ab 讨论 1.若a实现了__iadd__方法就会调用这个方法。同时对于可变序列list,bytearray和array.array来说a会就地变动了就像调用了a.extend(b)一样 2.若a没有实现__iadd__方法ab这个表达式的效果就会根aab一样了首先计算ab得到一个新的对象然后赋值给a。 总结 在这个表达式中变量名会不会被关联到新的可变对象完全取决于这个类型有没有实现__iadd__这个方法。总的来说可变序列一般都实现了__iadd__这个方法因此是就地加法。而不可变序列没有实现这个方法就会像步骤2那样操作。后者相对应的是__imul__. 例子 l [1, 2, 3] print(before id(l):,id(l)) l *2 print(l) print(after id(l):,id(l)) t (1, 2, 3) print(before id(t):,id(t)) t * 2 print(after id(t):,id(t)) # 运用增量惩罚后新的元组被创建结果如图 关于 的谜题 t (1, 2, [30,40]) t[2] [50, 60] print(t)结果t[2]被改动了但是也有异常出现。但是我们可以写成t[2].extend([50,60])来避免这个异常。 教训 不要把可变对象放在元组里面增量赋值不是一个原子操。它虽然会抛出异常但是还是完成了操作查看python的字节码并不难它对我们了解代码背后的运行机制很有帮助。 补充extend()方法和有什么区别呢 a [1,2,3] b [4,5,6] c abd [1,2,3] e [4,5,6] d.extend(e)结果如图 结论 结果是一样的但是号生成的是一个新的对象而extend则是在原地的修改对象。 extend()的运算效率比更高。但是 d.extend(e) 的返回结果是None而不是合并后的序列。d序列是合并后的序列。 c返回的是新的序列。 2.7 list.sort方法和内置函数sorted(排序) list.sort方法会就地排序列表这也是这个方法返回None的原因按照python的惯例如果一个函数或者方法对对象进行的是就地改动那它就应该返回None. 与list.sort相反的是sorted它会新建一个列表作为返回值。这个方法可以接受人和形式的可迭代对象作为参数甚至包括不可变序列或者生成器但是它总是返回一个列表。 不管list.sort或者sorted函数都有两个参数reverse和key reverse:默认为False,就是升序排列,True为降序排列key:对一些字符串进行排序的时候keystr.lower来实现忽略大小写的排序;keylen来显示根据字符串长度来排序。 例子 fruits [grape, raspberry, apple, banana] print(未排序, fruits) print(sorted(fruits)) print(sorted, fruits) print(sorted(fruits,reverseTrue)) print(sorted(fruits,keylen)) print(sorted(fruits,keylen,reverseTrue)) print(fruits) fruits.sort() print(fruits)结果如下 可以发现直到执行了fruits.sort方法fruits本身才发生了变化。 排好序的序列可以用来进行快速搜索而标准库的bisect模块给我们提供了二分查找算法。 2.8 用bisect来管理已排序的序列 bisect模块包含类 两个主要函数bisect和insert两个函数都利用二分查找算法在有序序列中查找或者插入元素。 在有序序列中用bisect查找某个元素的插入位置。 例子1 import bisect import sys HAYSTACK [1, 4, 5, 6, 8, 12, 15, 20, 21, 23, 23, 26, 29, 30] NEEDLES [0, 1, 2, 5, 8, 10, 22, 23, 29, 30, 31] ROW_FMT {0:2d} {1:2d} {2}{0:2d} def demo(bisect_fn):for needle in reversed(NEEDLES):position bisect_fn(HAYSTACK, needle) #返回插入的位置offset position * |print(ROW_FMT.format(needle, position, offset))# return bisect_fnif __name__ __main__:if sys.argv[-1] left:bisect_fn bisect.bisect_left #当碰到相等的元素的时候会放在它左边前边 else:bisect_fn bisect.bisect #或者是bisect_fn bisect.bisect_right,当碰到相等的元素的时候会放在它的右边后边print(DEMO:, bisect_fn.__name__)print(haystack -, .join(%2d % n for n in HAYSTACK))demo(bisect_fn)例子2根据分数找到它对应的成绩 import bisect def grade(score,breakpoint [60,70,80,90],gradesFDCBA):i bisect.bisect(breakpoint,score) # 返回i匹配gradesreturn grades[i] t [grade(score) for score in [33,99,77,70,89,91,10]] print(t)输出 [F, A, C, C, B, A, F]2.8.2用bisect.insort插入元素 insort(seq,item) 把变量item插入到序列seq中并能保持seq的升序顺序。 import bisect import random SIZE 7 random.seed(1729) my_list [] for i in range(SIZE):new_item random.randrange(SIZE*2)bisect.insort(my_list, new_item)print(%2d - % new_item, my_list)结果如图 补充 %和format的区别 参考https://www.cnblogs.com/zhaopanpan/p/8875765.html %和format的区别 2.9 当列表不是首选时 2.9.1 数组 2.9.2内存视图 2.9.3 NumPy和SciPy 科学计算有关的算法 窥探NumPy二维数组的基本操作 import numpy a numpy.arange(12) print(a) print(type(a)) print(a.shape)#查看维度 a.shape 3, 4 #变成二维的 print(a) print(a[2]) print(a[2, 1]) print(a[:, 1]) t a.transpose() #行列交换,得到**新的数组** print(t) 结果如下 可以发现t是一个新的数组。 2.9.4 双向队列和其他的形式的队列 补充markdown生成目录方式在开头输出[toc]
http://www.sadfv.cn/news/287526/

相关文章:

  • 吉林省 网站建设wordpress 特别慢
  • 查公司信息的网站是哪个网站wordpress 搬家 问题
  • 做网站收费多少济宁融合百度推广公司
  • jsp做网站案例帝国cms个人网站模板
  • 旅店网站建设规划书网站404页面作用
  • 外国的贸易网站saascrm国内免费pdf
  • 网站建设需要注册什么类型的公司广州骏域网站建设专家
  • jquery网站开发南宁网站建设方案报价
  • 宁德城乡建设部网站自己做网站不如帮别人做运营
  • 网站开发方法是什么中国城乡建设厅网站
  • 什么网站能找到做展览的工人做婚庆网站
  • 阿里云网站服务器51网站一起做网店
  • 网站站内交换链接怎么做室内设计公司取名字
  • 上海建企业网站广西远伟网络科技有限公司
  • 樊城网站建设做网站公违法嘛
  • 包头网站建设包头株洲公司网站建设
  • 固镇网站建设哪家好个人网站推广手段有哪些
  • 做网站用什么软件新媒体网络营销的概念
  • 青岛市专业做网站的吗c语言网站
  • 申请个网站网站的建设方案怎么写
  • 邯郸做网站推广找谁包年seo和整站优化
  • 企业网站源码网上海人才网招聘网最新招聘
  • 网站建设基础教学设计电子商务平台管理
  • 网站开发毕设答辩网站源代码怎么上传
  • 晋城做网站的怎样用虚拟空间做网站
  • 网站专业优化公司网站建设的内容有哪些
  • 郑州高新区网站建设安康网站建设
  • 多站点网站群的建设与管理系统营销网站策划方案
  • 购物网站大全棉鞋网站开发的软件环境
  • 网站流量如何盈利学网络运营在哪里学比较好