• 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次。

  • 相关阅读:
    Spring Boot日志管理
    JProfiler
    JProfiler学习笔记
    jprofiler安装图解
    方便!C++ builder快捷键大全
    QuickFix/N简介
    QuickFIX/N入门:(三)如何配置QuickFIX/N
    java自带线程池和队列详细讲解
    SQLYog快捷键大全
    DBCP连接池配置参数说明
  • 原文地址:https://www.cnblogs.com/shanlanjie/p/2390091.html
Copyright © 2020-2023  润新知