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)),一句代码就行了。