Python伪科学

1.Python切片

a = [ 1, 2, 3, 4, 5, 6 ]
x = a [ 1 : 5 ] #  x = a.__getitem__( slice ( 1, 5, None ) )
a [ 1 : 3 ] = [10, 11, 12 ]#  a.__setitem__( slice ( 1, 3, None ), [ 10, 11, 12 ] )
del a [ 1 : 4 ]#  a.__delitem__( slice ( 1, 4, None ) )

 

a = m [ 0 : 100 : 10 ]  #  带步进的切片(步进值=10)

 step还可以为负,这时候我们就倒着数了,下面我们看看 一个经典的应用:翻转字符串

>>> str='pythontab.com'
>>> str[::-1]

 这时候我们可以输出:

'moc.batnohtyp'

 list的切片赋值:

name=list('Perl')

name[1:]='ython'

name就是['P','y','t','h','o','n']

name=[1,9]

name[1:1]=[2,3,4,5,6,7,8]

name=[1,2,3,4,5,6,7,8,9]这就相当于插入操作了。

替换操作也很简单name[1:8]=[],结果就是[1,9]

如果我们想将string的某些字符换掉,我们就不能再这么赋值了,但是可以用字符串链接。

nam='Perl'

name=nam[:1]+'ython'

name就是Python

 

 

2.元组赋值

a,b=1,2 这时候a=1,b=2

元组赋值可以应用于交换值。不用像java中的增加一个中间变量,然后交换。

python中直接 a,b=b,a这样简单的一句话就使得a,b交换了值。

 

3.List合并

a=[1,3,2]

b=[4,5,6]

a.extend(b)

a=[1,3,2,4,5,6]

a.sort()  --> [1,2,3,4,5,6],java中也有Collections.sort(int[]、arrayList)

 

4.统计字符串中某个字符的出现的次数:count

s='fagareghaher'

s.count('a')=2

 

5.duck typing 

这是动态类型语言特有的,这时我们关注的不是类型对象本身,而是如何使用的。借用动态类型语言的这个特点,我们可以轻松实现多态。

#coding=utf-8
class Duck:
    def quack(self):
        print "Quaaaaaack!"

class Bird:
    def quack(self):
        print "bird imitate duck."

class Doge:
    def quack(self):
        print "doge imitate duck."

def in_the_forest(duck):
    duck.quack()

duck = Duck()
bird = Bird()
doge = Doge()
for x in [duck, bird, doge]:
    in_the_forest(x)

 

如果是java,我们的in__the__forest(duck),其他的必须实现继承,并向上转型才可以调用该方法。但是动态语言里我们不关注这些,只关注实现。一个明显的缺点就是不能利用IDE编译整理错误,如果有错的话,我们只能在运行时发现。

6.如何判断输入的数字中有没有重复的?

return len(a) >len(set(a)),一句代码就行了。

猜你喜欢

转载自w-sl.iteye.com/blog/2330126