zoukankan      html  css  js  c++  java
  • Python 初学笔记


    >>> print "isn't that grand"
    isn't that grand #不需要转义的
    #为了让文字符扩展到多行,可以在一行的末尾使用反斜线符号,意味着下面一行是上面字符串的延续。
    #换行符 /n
    #用一对连续的三引用符号将字符串圈起来可以,文本将按照原貌存储。“”“大三大四的”“”
    #在字符前面加R或者r,表示该字符串是一个“原”字符串,即使其中包含转义字符,也将被忽略。
    #在前面加U或者u,使之成为Unicode字符串
    #通过索引访问单个字符 mystr[i]
    #字符串的切片操作 mystr[i:j:k],第三个参数可以没有,表示步长。当步长为负数时,必须让开始索引大于结束索引
    #字符串遍历操作 for c in mystr:
    #拼接:mystr+'odl'
    #多次重复:‘xo’*3
    #用mystr.isdigit() 测试字符串的内容,如果mystr不是空的而且所有字符都是数字,将返回true。
    #改成大写操作 mystr.upper()
    #计算字符串出现的次数 mystr.count('needle') 计算‘needle’在mystr中出现的次数
    #可以用mystr.splitlines()将字符串分隔成多个单行字符串并植入一个列表中
    #用join重新生成一个庞大的字符串
    --将一个字符转换为相应的ASCII或者Unicode码
    ASCII;直接使用内置的函数 ord(i)
    Unicode:同上 chr(97),返回对应的ASCII
    把数字的Unicode码转化为长度为1的Unicode字符串,使用 unichr()

    return isinstance(anobj,basestring)  #判断anobj是不是 字符串
    --字符串的对齐
    str.ljust(20)
    str.rjust(20)
    str.center(20)  也可以用str.center(20,'+')
    --去除字符串两端的空格
    str.lstrip()  #去除左边的空格
    str.rstrip() #去除右边的空格
    str.strip()   #去除两边的空格
    例:x='xyxxyy hejyx yyx'
       print '|'+x.strip('xy')+'|'
       | hejyx |  #只有开头的x y 被真正移除,开头和结尾 的空格被保留下来了
    --合并字符串
    str.join(pieces)
    str='%s%s something %s yet'%(piece,piece2,piece3)
    str=piece1+piece2+piece3;  #尽量不使用这种方法,(性能问题)

    pow(2,3)  #2^3运算
    abs(-10)=10  #求绝对值
    round(1.0/2.0)=1.0  #把浮点数四舍五入为最接近的整数值
    import math
    math.floor (32.9)=32.0 #取整操作

    >>> from math import sqrt  #这种形式可以直接使用函数,不需要模块名
    >>> sqrt(9)
    3.0   #开方

    nan  #not a number

    temp=42
    >>> print 'asdas'+'temp'
    asdastemp   #字符串的拼接 temp用的是单引号

    temp=42
    >>>print 'as'+`temp`  #这里temp用的是反引号(反引号在tab键上面)
    as42 

    str,repr和反引号是把python值变为字符串的三种方法

    raw_input与input的区别:input会假设用户输入的是合法的python表达式,输入字符串的时候要加引号的
    而raw_input会把所有的输入当做原始数据(尽可能用这个)

    >>> print r"adas\"
    SyntaxError: EOL while scanning string literal
    >>> print r"sads"
    sads    #原始字符串的结尾不能有\,如果需要的话需要对其进行转义
    >>> print r"dsa\\"
    dsa\\    #虽然进行了转义但是居然出现了两个\\
    >>> print r'asd' '\\'  #这样就可以出新一个\
    asd\

    #两种相同类型的序列才能进行操作,列表与字符串不能操作的
    >>> 'world'+[1,2,3]

    Traceback (most recent call last):
      File "<pyshell#22>", line 1, in <module>
        'world'+[1,2,3]
    TypeError: cannot concatenate 'str' and 'list' objects

    #None表示什么都没有,N大写。以下表示初始化一个长度为10的列表
    >>> s=[None]*10
    >>> s
    [None, None, None, None, None, None, None, None, None, None]

    #判断某个值是否在序列中
    >>> users=['foo','shan','lan']
    >>> raw_input('Enter your name')in users
    Enter your nameshan
    True

    #检查用户名和PIN码
    datebase=[['shan','1111'],['lan','2222'],['jie','3333']]
    username=raw_input('username:')
    pin=raw_input('Pin code:')
    if[username,pin] in datebase:print 'Access granted'

    输出:username:shan
    Pin code:1111
    Access granted
    >>>

    #根据字符串创建列表
    >>> list('hello')
    ['h', 'e', 'l', 'l', 'o']

    #列表的删除操作
    >>> name=['shan','lan','jie']
    >>> del name[1]
    >>> name
    ['shan', 'jie']

    #切片赋值,插入新元素
    >>> numbers=[1,5]
    >>> numbers[1:1]=[2,3,4]
    >>> numbers
    [1, 2, 3, 4, 5]

    #在列表末尾追加新元素
    >>> lis=[1,2]
    >>> lis.append(4)
    >>> lis
    [1, 2, 4]

    #统计某个元素在列表中出现的次数
    >>> ['q','q','q','w','w'].count('q')
    3

    #拓展列表
    >>> a=[1,2,3]
    >>> b=[4,5,6]
    >>> a.extend(b)
    >>> a
    [1, 2, 3, 4, 5, 6]
    或者
    >>> a=[1,2]
    >>> b=[3,4]
    >>> a[len(a):]=b
    >>> a
    [1, 2, 3, 4]

    #寻找某个值的索引
    >>> name=['shan','lan','jie']
    >>> name.index('shan')
    0

    #将对象插入列表
    >>> name=['shan','lan','jie']
    >>> name.insert(1,"ssss")
    >>> name
    ['shan', 'ssss', 'lan', 'jie']

    #列表的移除操作之pop  (pop是有返回值的)
    >>> name=['shan','lan','jie']
    >>> name.pop()  #默认是移除最后一个
    'jie'
    >>> name
    ['shan', 'lan']
    >>> name.pop(0)
    'shan'
    >>> name
    ['lan']
    PS;pop和append正好相对
    >>> x=[1,2,3]
    >>> x.append(x.pop())
    >>> x
    [1, 2, 3]


    #列表元素的移除操作之remove (remove是没有返回值的)
    >>> name=['shan','lan','jie']
    >>> name.remove('shan')
    >>> name
    ['lan', 'jie']

    #列表元素的反向操作
    >>> x=[1,2,3]
    >>> x.reverse()
    >>> x
    [3, 2, 1]


    #列表元素的排序
    >>> y=['1','2','8','4','3','9']
    >>> y.sort()
    >>> y
    ['1', '2', '3', '4', '8', '9']
    PS :当用户需要一个排序好的列表副本,同时有保留原列表不变的时候
    >>> x=['1','2','8','4','3','9']
    >>> y=x.sort()
    >>> print y
    None  #是错的!说明sort()返回的是空值
    #正确做法,先做一个副本给y,在让y排序
    >>> x=['1','2','8','4','3','9']
    >>> y=x[:]
    >>> y.sort()
    >>> x
    ['1', '2', '8', '4', '3', '9']
    >>> y
    ['1', '2', '3', '4', '8', '9']
    #简单的赋值是没有用的
    >>> x=['1','2','8','4','3','9']
    >>> y=x
    >>> y.sort()
    >>> y
    ['1', '2', '3', '4', '8', '9']
    >>> x
    ['1', '2', '3', '4', '8', '9']
    #另一种获取已排序的列表副本的方法是使用sorted(),它可以返回列表
    >>> x=['1','2','8','4','3','9']
    >>> y=sorted(x)
    >>> x
    ['1', '2', '8', '4', '3', '9']
    >>> y
    ['1', '2', '3', '4', '8', '9']
    #按照关键字排序
    >>> name=['shan','lan','ji','aaaaa']
    >>> name.sort(key=len)
    >>> name
    ['ji', 'lan', 'shan', 'aaaaa']
    >>> x=['1','2','8','4','3','9']
    >>> x.sort(reverse=True)
    >>> x
    ['9', '8', '4', '3', '2', '1']

    #把序列转化为元组
    >>> tuple([1,2,3])
    (1, 2, 3)
    >>> tuple('abc')
    ('a', 'b', 'c')
    >>> tuple((1,2,3))
    (1, 2, 3)

    #字符串是不能改变的
    >>> name='shanlanjie'
    >>> name[-3:]='sss'

    Traceback (most recent call last):
      File "<pyshell#127>", line 1, in <module>
        name[-3:]='sss'
    TypeError: 'str' object does not support item assignment

    #字符串的查找
    >>> name='i am shanlanjie'
    >>> name.find('shanlanjie')
    5
    >>> name='i am shanlanjie am i'
    >>> name.find('am',2)  #提供起始点
    2
    >>> name.find('shanlanjie',0,5)
    -1  #提供起始点和终止点


    #字符串的join方法
    >>> add='+'
    >>> name=['shan','lan','jie']  #这个地方必须是字符串
    >>> add.join (name)
    'shan+lan+jie'

    #把字符串变成小写
    >>> 'DSADSADSAD'.lower()
    'dsadsadsad'

    #标题转换
    >>> 'i am shanlanjie'.title()
    'I Am Shanlanjie'

    #子字符串的替换
    >>>'i am shanlanjie'.replace('am','am not')
    'i am not shanlanjie'

    #将字符串分割成序列
    >>> '1+2+3+4+5'.split('+')
    ['1', '2', '3', '4', '5']

    #dict函数创建字典
    >>> items=[('name','shanlanjie'),('age',21)]
    >>> d=dict(items)
    >>> d
    {'age': 21, 'name': 'shanlanjie'}
    >>> d['name']
    'shanlanjie'
    >>> d=dict(name='shanlanjie',age=21) #这是通过关键字参数创建字典
    >>> d
    {'age': 21, 'name': 'shanlanjie'}

    #字典的格式化字符串
    >>> name={'shan':'1111','lan':'2222','jie':'3333'}
    >>> "big shan's phone number is %(lan)s."% name
    "big shan's phone number is 2222."

    #(字典)clear清除所有项
    >>> name={'shan':'1111','lan':'2222','jie':'3333'}
    >>> f=name.clear()
    >>> name
    {}
    >>> f
    >>> print f
    None

    #(字典)的copy方法。(浅复制)
    >>> x={'name':'admin','numbers':['1111','2222','3333']}
    >>> y=x.copy()
    >>> y['name']='shanlanjie'   #当在副本替换值的时候,原始字典不变
    >>> y['numbers'].remove('1111')  #当在副本改变值的时候,原始字典将会改变
    >>> y
    {'name': 'shanlanjie', 'numbers': ['2222', '3333']}
    >>> x
    {'name': 'admin', 'numbers': ['2222', '3333']}

    #建立空字典
    >>> {}.fromkeys(['name','age'])
    {'age': None, 'name': None}   #默认是None
    >>> {}.fromkeys(['name','age'],'sadsd')
    {'age': 'sadsd', 'name': 'sadsd'}
    >>>

    #用get做字典的查询
    >>> d={}
    >>>
    >>> print d.get('name')
    None  #默认是None
    >>> d['name']='shan'
    >>> d.get('name')
    'shan'
    >>> d.get('age','21')
    '21'   #改变默认值
    >>>

    #用has_key查询字典中是否含有某个值
    >>> name={'shan':'1111','lan':'2222','jie':'3333'}
    >>> name.has_key('shan')
    True

    #items方法将所有子典项以列表方式返回,返回时没有特殊顺序
    >>> name={'shan':'1111','lan':'2222','jie':'3333'}
    >>> name.items()
    [('lan', '2222'), ('jie', '3333'), ('shan', '1111')]

    #iteritems返回的是迭代器
    >>> name={'shan':'1111','lan':'2222','jie':'3333'}
    >>> it=name.iteritems()
    >>> it
    <dictionary-itemiterator object at 0x020B2AE0>
    >>> list(it)
    [('lan', '2222'), ('jie', '3333'), ('shan', '1111')]

    #字典的pop,删除某一个对象
    >>> name={'shan':'1111','lan':'2222','jie':'3333'}
    >>> name.pop('shan')
    '1111'
    >>> name
    {'lan': '2222', 'jie': '3333'}

    #字典的popitem  (随机弹出一个删除,字典是没有顺序的)
    >>> name={'shan':'1111','lan':'2222','jie':'3333'}
    >>> name.popitem()
    ('lan', '2222')
    >>> name
    {'jie': '3333', 'shan': '1111'}

    #字典的setdefault用法
    >>> d={}
    >>> d.setdefault('name','shanlanjie')
    'shanlanjie'   #当键不存在时,返回默认值
    >>> d
    {'name': 'shanlanjie'}
    >>> d.setdefault('name','NN')
    'shanlanjie'  #当键存在时,返回键值
    >>> d
    {'name': 'shanlanjie'}
    >>> d={}
    >>> print d.setdefault('name') 
    None  #默认值是None

    #字典的update
    >>> name={'shan':'1111','lan':'2222','jie':'3333'}
    >>> x={'shan':'4444'}
    >>> name.update(x)  #用x更新name
    >>> name
    {'lan': '2222', 'jie': '3333', 'shan': '4444'}

    #用values以列表的形式返回字典中的值(可重复)
    >>> name={'shan':'1111','lan':'2222','jie':'3333','big':'1111'}
    >>> name.values()
    ['1111', '2222', '3333', '1111']

    #is运算符 判定的是同一性而不是相等性 x,y,z虽然值相等,但是不是同一个对象
    >>> x=y=[1,2,3]
    >>> z=[1,2,3]
    >>> x==y
    True
    >>> x is y
    True
    >>> x is z  #用==判断是否相等,用is判断是不是同一个对象
    False

    #range()
    >>> range(0,10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  #包含上线,不包含下线

    #循环遍历字典元素
    >>> name={'shan':'1111','lan':'2222','jie':'3333'}
    >>> for key in name:
     print key,'sdsad',name[key]

     
    lan sdsad 2222
    jie sdsad 3333
    shan sdsad 1111
    或者
    >>> name={'shan':'1111','lan':'2222','jie':'3333'}
    >>> for key,value in name.items():
     print key,'dassad',value

     
    lan adssa value
    jie adssa value
    shan adssa value

    #并行迭代
    >>> name=['shan','lan','jie']
    >>> ages=[12,15,34]
    >>> for i in range(len(name)):
     print name[i],'is',ages[i],'years old'

     
    shan is 12 years old
    lan is 15 years old
    jie is 34 years old
    或者
    >>> name=['shan','lan','jie']
    >>> ages=[12,15,34]
    >>> zip(name,ages)   #用zip函数把两个序列压缩到一起
    [('shan', 12), ('lan', 15), ('jie', 34)]
    >>> for nam,age in zip(name,ages):
     print nam,'is',age,'years old'

     
    shan is 12 years old
    lan is 15 years old
    jie is 34 years old

    #翻转和排序迭代
    >>> sorted([4,3,5,2])
    [2, 3, 4, 5]
    >>> sorted('hello world')
    [' ', 'd', 'e', 'h', 'l', 'l', 'l', 'o', 'o', 'r', 'w']
    >>> list(reversed('hello world'))
    ['d', 'l', 'r', 'o', 'w', ' ', 'o', 'l', 'l', 'e', 'h']
    >>> ''.join(reversed('hello world'))
    'dlrow olleh'

    #列表推倒式
    >>> [x*x for x in range(10)]
    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    >>> [x*x for x in range(10) if x%3==0]
    [0, 9, 36, 81]
    >>> [(x,y)for x in range(3)for y in range(3)]
    [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

    #pass 什么都不发生

    #关于del
    >>> name=['shan','lan','jie']
    >>> name2=name
    >>> name2
    ['shan', 'lan', 'jie']
    >>> name=None   #把name赋空值,但是并不是删除
    >>> name
    >>> name2  #name2与name指向同一个字典
    ['shan', 'lan', 'jie']
    >>> name=['shan','lan','jie']
    >>> name2=name
    >>> del name  #删除了,只是删除了名字,不会删除值的。
    >>> name

    Traceback (most recent call last):
      File "<pyshell#275>", line 1, in <module>
        name
    NameError: name 'name' is not defined
    >>> name2   #python是没有办法删除值的
    ['shan', 'lan', 'jie']

    #exec执行一个字符串的语句,不返回任何对象
    >>> exec "print 'hello world'"
    hello world

    >>> from math import sqrt
    >>> exec "sqrt=1"  #干扰了命名空间
    >>> sqrt(4)

    Traceback (most recent call last):
      File "<pyshell#286>", line 1, in <module>
        sqrt(4)
    TypeError: 'int' object is not callable

    >>> from math import sqrt
    >>> scope={}  #scope是作用域的意思
    >>> exec 'sqrt=1' in scope  #把要执行的东西放到作用域,就不怕收到其他干扰了
    >>> sqrt(4)
    2.0
    >>> scope['sqrt']
    1

    #eval('用于求值')
    >>> eval(raw_input("计算:"))
    计算:12+12+10*12
    144

    -----抽象
    #内建函数callable判读函数是否可用
    >>> import math
    >>> x=1
    >>> callable(x)
    False
    >>> y=math.sqrt
    >>> callable(y)
    True

    #给函数写文档
    def hello(name):
        '''shanlanjie'''
        return 'hello'+name
     
    #给函数提供任意多的参数
    def print_params(*params):
        print params
    >>> print_params(1,2,3)
    (1, 2, 3)   #返回的是元组

    def print_params(**params):
        print params
    >>> print_params(x=1,y=2,z=3)
    {'y': 2, 'x': 1, 'z': 3}  #返回的是字典

    #继承
    class Filter:
        def init(self):
            self.blocked=[]
    class Spamfiter(Filter):  #Spamfilter继承了Filter
        def init(self):  #重写了超类中的init()
            self.blocked=['spam']
      
    >>> issubclass(Spamfiter,Filter)  #判断Spamfiter是不是Filter的子类
    True

    ---正则表达式
    .(点号)  --通配符
    \  --转义字符
    [a-z] --匹配a-z之间的字母
    [^abc]  --匹配除了abc之间的字符
    | --选择符
    (www\.)?    --在后面加问号就变成了可选项,可以出现在匹配字符串中,但是不是必须的
    w* --允许重复匹配0次或者多次
    w+ --允许重复一次或者多次
    w{m,n}  --允许匹配m-n次。

  • 相关阅读:
    Delphi公用函数单元
    Delphi XE5 for Android (十一)
    Delphi XE5 for Android (十)
    Delphi XE5 for Android (九)
    Delphi XE5 for Android (八)
    Delphi XE5 for Android (七)
    Delphi XE5 for Android (五)
    Delphi XE5 for Android (四)
    Delphi XE5 for Android (三)
    Delphi XE5 for Android (二)
  • 原文地址:https://www.cnblogs.com/shanlanjie/p/2390091.html
Copyright © 2011-2022 走看看