Key Id: 7C4D54E2 Key Server: pgp.mit.edu Key Fingerprint: 2486 491E 9FE2 D615 E17C B407 88B2 366F 7C4D 54E2
My GPG Public Key
简单翻译Python Reference中关于Data Model的内容
最近在学习Python,官方文档之详细之实用,大大超乎了我的想象。而我觉得最值得一读就是其中对于Python数据抽象理念的描述(Data Model一章)。读完它之后,Python的大致感觉也就有了,剩下的就是学习各种语言特性了。 写得很不错,自然想试试逐步翻译成中文。英语语文水平不敢恭维,希望大家指正。
对象是Python对于数据的抽象方式。所有在Python程序里面的数据都是以对象或以其之间的关系的形式来表现的(在某种意义上,遵循Von Neumann“储存程式型电脑”的模型,代码本身也用对象来表示)。
每个对象都有个与之对应的身份信息、所属类型和值。 一个对象一旦被创建,它的身份信息就再也不会改变。你可以把它当作是这个对象在内存中对应的地址。“is”操作符能比较两个对象的标识符,而“id()”函数能返回一个代表该对象身份的整数值(目前被实现作它的内存地址)。对象的类型也是不可变的。一个对象的类型决定了此对象支持的操作(比如说: “它有长度吗?”)并且定义了那个类型的对象可能的值。“type()”函数返回一个对象的类型(其实它自身也是一种对象)。有些对象的值可以变化。那些自身值可以变化的对象也被称作“可变对象”mutable,而一经创建,值就不可改变的对象叫“不可变对象”immutable。(不可变容器对象中包含的引用指向的另一个可变对象的值是可以改变的,但是容器本身却仍然被认为是不可变的,因为它包含的内容不可变。因此,“不可变”性 并不直接等价于有一个不变的值,它更为精妙。)
对象不需要被显式地销毁,当他们一旦变得无法再被使用到就可能被回收。
让垃圾回收延迟或是被彻底忽略在实现上都被允许—-这只是个关乎实现质量好坏的事情,只要对象在能被访问到时不会被回收就行了。
Objects are Python’s abstraction for data. All data in a Python program is represented by objects or by relations between objects. (In a sense, and in conformance to Von Neumann’s model of a “stored program computer,” code is also represented by objects.)
Every object has an identity, a type and a value. An object’s identity never changes once it has been created; you may think of it as the object’s address in memory. The ‘is‘ operator compares the identity of two objects; the id() function returns an integer representing its identity (currently implemented as its address). An object’s type is also unchangeable. 1 An object’s type determines the operations that the object supports (e.g., “does it have a length?”) and also defines the possible values for objects of that type. The type() function returns an object’s type (which is an object itself). The value of some objects can change. Objects whose value can change are said to be mutable; objects whose value is unchangeable once they are created are called immutable. (The value of an immutable container object that contains a reference to a mutable object can change when the latter’s value is changed; however the container is still considered immutable, because the collection of objects it contains cannot be changed. So, immutability is not strictly the same as having an unchangeable value, it is more subtle.)
An object’s mutability is determined by its type; for instance, numbers, strings and tuples are immutable, while dictionaries and lists are mutable.
Objects are never explicitly destroyed; however, when they become unreachable they may be garbage-collected. An implementation is allowed to postpone garbage collection or omit it altogether — it is a matter of implementation quality how garbage collection is implemented, as long as no objects are collected that are still reachable.
NOIP2011 完结了
这回主要是求稳,Day1 早上有个小插曲,被黄蜂蛰了3次,就这样 一瘸一拐地进了考场。T_T
大概用了30-60分钟写完一二题,发现二题比意想中的水,怀疑是不是大家都写了前两道,于是略有压力地写第三题。不是很习惯屏幕的比例,上下太窄了,每次能看到的代码只有很少一部分,字迹还有些模糊。第三题花的时间出乎了想象,弄完就只剩半小时了。于是改变策略去检查一二题。直到剩下5分钟时才猛然发现三题囧了——没考虑拿出来的那块掉下来的情况。这可是个Fatal Error,于是赶紧改。但是恼人的是怎么改都错了,样例都输-1了。 时间所剩无几,我干脆放弃修改,把原来那个代码硬着头皮交了。事实证明我这样做是明智的。
总之,Day1有些遗憾。
Day2吸取了Day1的教训,把终端字体改小了,并且按了自动调节钮把字迹弄清晰了。果然,一题水了,二题刚开始读错了题意,不过很快就发现了。接着就很自然注意到了单调性,一看范围,出题人意图很明显要求一个二分和线性的验证。但是验证却一直想不到怎么弄,有点被题意恶心到了。干脆先写了个二分加裸验证出来,一写完就发现可以转化成询问区间字段和的问题,自然先到树状数组。可是如此复杂度就是O(n logn logn)的了,应该有70吧,果断想三题。发现三题是我最讨厌的乘车问题,看得出来DP可以得60%,但是怎么思路都不明确。估计这题是整次考试压轴的,于是放了下,去看看二题有没有优化余地,重读二题代码,意识到只询问不修改,树状数组基本就是牛刀啊,直接记前缀和就得了。写好了拍了一会儿,在造数据过程中发现必须S弄大些才能让答案不总是一个值,进而查看题目S范围,大惊失色——忘开long long了,仔细把全部int检查一遍逐个看是不是该换成long long。心有余悸,三题已经无从下手,果断dfs裸之,因为此时只剩半个小时了。
二试纠正了一个大错误,比一试好啊。
这样mayan无法估计,但应该至少有30分,总分理想情况应该是460。
接下来就是为验证是不是理想情况而挣扎。我的记忆像内存掉电了之后一般逐渐凌乱不清:记不清qc那题究竟Y变量有没有开long long,就是说有可能为此丢失大量分数。纠结了好久,通过对记忆清晰的一些证据进行间接推断发现,是定义成ll(typedef long long ll)的,但是脑海中又似乎记得那里有个高亮说明是int而非ll。还发现hotel一题中虽然结果用了ll,但是可能过程中一处溢出。搞得我神经都要崩溃了。
最后看到自己的代码时,qc那道果然推理是正确的,用了ll,hotel有极限数据溢出的可能。
然后自己的成绩——470,mayan居然有个-1的点独立于30%的弱数据之外,得了40。其他4题全部AC,bus也裸到了30。
hotel居然没有极限数据,汗啊。。结果数据很极限很强的反而是我没问题的qc,有如天助。
这次的题型太过单一了,没有对一些很有用的模型的考查,DP和图论都没有(bus那道算作DP也重其量1/6)。考查的内容就是裸,裸,裸,还有二分。神马玩意儿,没有区分度啊!特别是学得少的同学占足了便宜,这套题4道门槛都很低,用for循环就可以结束战斗。。
万事俱备,只欠东风。
NOIP2011 两天,每天3小时3道题。
7:30到高新校区的考场,8:30开考
可以使用STL, freopen
long long 输出用%lld
比较输出时忽略行末空格和文末换行
做完题检查空间,时间,输入输出规模(是否爆int/long long),文件名(.in .out .cpp), 输出格式(是否按题目要求)
