摘要: 1、find find方法可以在一个较长的字符串中查找子字符串。它返回子串所在位置的最左端索引。如果没有找到则返回-1。 2、join join方法是非常重要的字符串方法,它是split方法的逆方法,用来在队列中添加元素:>>> s = ['1', '2', '3']>>> '+'.join(s)'1+2+3' 注意:需要添加的队列元素都必须是字符串。 3、lower lower方法返回字符串的小写字母版。 4、replace replace方法返回某个字符串的所有匹配项均被替换 阅读全文
posted @ 2012-02-04 12:54 SkyHacker 阅读(7243) 评论(0) 推荐(0) 编辑
摘要: 1,list函数 因为字符串不能像列表一样被修改,所以有时候根据字符串创建列表会很有用。list函数可以实现这个操作:1 In [1]: list('Hello')2 Out[1]: ['H', 'e', 'l', 'l', 'o'] 提示:可以用''.join(somelist)将一个由字符组成的列表转换为字符串。注意是字符。可以用str()函数转换成字符。 2,基本的列表操作 (1)、改变列表:元素赋值 改变列表很容易。但我们并不会用x=2这样的语句进行赋值,而是使用索引标记来为 阅读全文
posted @ 2012-02-04 01:30 SkyHacker 阅读(6660) 评论(0) 推荐(0) 编辑
摘要: map(function,iterable,...) Applyfunctionto every item ofiterableand return a list of the results. If additionaliterablearguments are passed,functionmust take that many arguments and is applied to the items from all iterables in parallel. If one iterable is shorter than another it is assumed to be e. 阅读全文
posted @ 2012-02-03 21:48 SkyHacker 阅读(18711) 评论(0) 推荐(1) 编辑
摘要: 题目:http://codeforces.com/problemset/problem/148/A题目很简单,就是两个循环。 1 #! /usr/bin/env python 2 3 x = [input() for i in xrange(4)] 4 d = input() 5 cnt=0 6 #for i in xrange(1,d+1): 7 # for j in x: 8 # if i % j == 0: 9 # cnt+=110 # break11 #cnt = sum(any(i%j==0 for j in x) for i in xran... 阅读全文
posted @ 2012-02-03 20:35 SkyHacker 阅读(869) 评论(1) 推荐(0) 编辑
摘要: 这里只讨论一个特殊的方法——__iter__,这个方法是迭代器规则的基础 迭代器规则 迭代的意思就是重复做一些事很多次——就像在循环中做的那样。到现在为止只是在for循环中对序列和字典进行迭代,但实际上也能对其他的对象进行迭代:实现__iter__方法的对象。 __iter__方法返回一个迭代器,所谓的迭代器就是具有next方法(这个方法在调用时不需要任何参数)的对象。在调用next方法时,迭代器会返回它的下一个值。如果next方法被调用,但迭代器没有值可以返回,就会引发一个StopIteration异常。 注意:迭代器规则在Python3.0中有一些变化。在新的规则中,迭代器对象... 阅读全文
posted @ 2012-02-02 23:46 SkyHacker 阅读(1500) 评论(0) 推荐(0) 编辑
摘要: 将属于一类的对象放在一起。如果一个函数操纵一个全局变量,那么两者最好都在类内作为特性和方法出现。不要让对象过于亲密。方法应该只关心自己实例的特性。让其他实例管理自己的状态。要小心继承,尤其是多重继承。继承机制有时很有用,但也会在某些情况下让事情变得过于复杂。多继承难以正确使用,更难以调试。简单就好。让你的方法小巧。一般来说,多数方法都应能在30秒内被读完(以及理解),尽量将代码行数控制在一页或者一屏之内。 当考虑需要什么类以及类要有什么方法时,应该尝试下面的方法。写下问题的描述(程序要做什么?),把所有名词,动词和形容词加下划线。对于所有名词,用作可能的类。对于所有动词,用作可能的方法。对于. 阅读全文
posted @ 2012-02-01 22:53 SkyHacker 阅读(301) 评论(0) 推荐(0) 编辑
摘要: Python并不直接支持私有方式,而要靠程序员自己把握在外部进行特性修改的时机。毕竟在使用对象前应该知道如何使用。但是,可以用一些小技巧达到私有特性的效果。 为了让方法或者特性变为私有(从外部无法访问),只要在它的名字前面加上双下划线即可:In [6]: class Secretive: def __inaccessible(self): ...: print "Bet you can't see me..."现在__inaccessible从外界是无法访问的,而在类内部还能使用访问:1 In [8]: s = Secretive()2 3 ... 阅读全文
posted @ 2012-02-01 21:12 SkyHacker 阅读(3357) 评论(0) 推荐(0) 编辑
摘要: 列表推导式(list comprehension)是利用其他列表创建新列表(类似于数学术语中的集合推导式)的一种方法。它的工作方式类似于for循环,也很简单:In [39]: [x*x for x in range(10)]Out[39]: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] 如果只想打印出那些能被3整除的平方数,只需要通过添加一个if部分在推导式中就可以完成:In [41]: [x*x for x in xrange(10) if x % 3 == 0]Out[41]: [0, 9, 36, 81] 也可以增加更多的for语句的部分:In [42... 阅读全文
posted @ 2012-01-27 23:32 SkyHacker 阅读(39173) 评论(0) 推荐(7) 编辑
摘要: 一个简单的for语句就能循环字典的所有键,就像处理序列一样:In [1]: d = {'x':1, 'y':2, 'z':3}In [2]: for key in d: ...: print key, 'corresponds to', d[key] ...: y corresponds to 2x corresponds to 1z corresponds to 3 在python2.2之前,还只能用beys等字典方法来获取键(因为不允许直接迭代字典)。如果只需要值,可以使用d.values代替d.keys。d.items方法会 阅读全文
posted @ 2012-01-27 18:19 SkyHacker 阅读(190306) 评论(4) 推荐(4) 编辑
摘要: 布尔运算符有个有趣的特性:只有在需要求值时才进行求值。举例来说,表达式x and y需要两个变量都为真时才为真,所以如果x为假,表达式就会立刻返回false,而不管y的值(事实上各个语言都有这个特性)。实际上,如果x为假,表达式会返回x得值----否则它就返回y的值。这种行为被称为短路逻辑(short-circuit logic)或惰性求值(lazy evaluaion):布尔运算符通常被称为逻辑运算符,就像你看到的那样第2个值有时“被短路了”。这种行为对于or来说也同样适用。在表达式x or y中,x为真时,它直接返回x的值,否则返回y值。注意,这意味着在布尔运算符之后的所有代码都不会执.. 阅读全文
posted @ 2012-01-22 17:09 SkyHacker 阅读(18434) 评论(1) 推荐(2) 编辑