美文网首页
python学习(一)

python学习(一)

作者: 小慕先森 | 来源:发表于2018-01-04 17:28 被阅读0次

    python数据类型

    整数、浮点数(1.23x10^9就是1.23e9)、字符串、布尔值(True、False)、空值(None)

    注释

    用#表示

    raw字符串

    在字符串前面加个前缀 r ,表示这是一个 raw 字符串,里面的字符就不需要转义了

    r'''python's 
    best 
    language'''
    

    字符串连接用+连接或者用().join() 或者逗号,来连接

    list类型

    L.append('item')    append()总是把新的元素添加到 list 的尾部
    L.insert(2,'item')  insert()方法,它接受两个参数,第一个参数是索引号,第二个参数是待添加的新元素
    L.pop()    pop()方法总是删掉list的最后一个元素,并且它还返回这个元素
    L.pop(4)   pop()按索引删除
    替换元素的话直接赋值即可
    

    tuple类型

    创建tuple和创建list唯一不同之处是用( )替代了[ ]

    t = ('Adam', 'Lisa', 'Bart')
    t[-1]   利用索引访问数据,但是不能赋值
    

    单元素 tuple 要多加一个逗号“,”,这样就避免和括号歧义如:t = (1,)

    dict类型

    花括号 {} 表示这是一个dict,内容按照 key: value形式
    d[key] 的形式来查找对应的 value
    判断key是否存在d.get(key)来判断,没有则返回None

    d.values()获取所有value的list
    d.itervalues()方法和values()方法迭代效果完全一样

    那这两个方法有何不同之处呢?

    1. values() 方法实际上把一个 dict 转换成了包含 value 的list。
    2. 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。
    3. 打印 itervalues() 发现它返回一个 <dictionary-valueiterator> 对象,这说明在Python中,for 循环可作用的迭代对象远不止 list,tuple,str,unicode,dict等,任何可迭代对象都可以作用于for循环,而内部如何迭代我们通常并不用关心。

    d.items()方法把dict对象转换成了包含tuple的list

    >>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
    >>> print d.items()
    [('Lisa', 85), ('Adam', 95), ('Bart', 59)]
    >>> for key, value in d.items():
    ...     print key, ':', value
    ... 
    Lisa : 85
    Adam : 95
    Bart : 59
    

    和 values() 有一个 itervalues() 类似, items() 也有一个对应的 iteritems(),iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple,所以, iteritems() 不占用额外的内存

    set类型

    dict的作用是建立一组 key 和一组 value 的映射关系,dict的key是不能重复的。
    set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像。
    创建 set 的方式是调用 set() 并传入一个 list,list的元素将作为set的元素

    s = set(['A', 'B', 'C'])
    'item' in s   返回true或者false
    s.add('D')     一是把新的元素添加到set中
    s.remove('D')  二是把已有元素从set中删除
    

    切片

    L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。
    >>> L[:3]
    ['Adam', 'Lisa', 'Bart']
    也可以从索引1开始,取出2个元素出来:
    >>> L[1:3]
    ['Lisa', 'Bart']
    只用一个 : ,表示从头到尾:
    >>> L[:]
    ['Adam', 'Lisa', 'Bart', 'Paul']
    L[:]实际上复制出了一个新list。
    >>> L[::2]
    ['Adam', 'Bart']
    第三个参数表示每N个取一个,上面的 L[::2] 会每两个元素取出一个来,也就是隔一个取一个。
    

    倒序切片
    倒数第一个元素为L[-1],倒序切片包含起始索引,不包含结束索引

    >>> L = ['Adam', 'Lisa', 'Bart', 'Paul']
    
    >>> L[-2:]
    ['Bart', 'Paul']
    
    >>> L[:-2]
    ['Adam', 'Lisa']
    
    >>> L[-3:-1]
    ['Lisa', 'Bart']
    
    >>> L[-4:-1:2]
    ['Adam', 'Bart']
    

    迭代

    python中,迭代永远是取出元素本身,而非元素的索引
    对于有序集合,元素确实有索引,有时候想拿到索引
    enumerate()函数
    ['Adam', 'Lisa', 'Bart', 'Paul']
    变成了类似:
    [(0, 'Adam'), (1, 'Lisa'), (2, 'Bart'), (3, 'Paul')]
    enumerate() 函数自动把每个元素变成 (index, element) 这样的tuple,再迭代,就同时获得了索引和元素本身。

    zip()函数可以把两个 list 变成一个 list:

    >>> zip([10, 20, 30], ['A', 'B', 'C'])
    [(10, 'A'), (20, 'B'), (30, 'C')]
    

    isinstance(x, str) 可以判断变量 x 是否是字符串
    匿名函数lambda x: x * x实际上就是:

    def f(x):
        return x * x
    

    关键字lambda表示匿名函数,冒号前面的x表示函数参数。

    相关文章

      网友评论

          本文标题:python学习(一)

          本文链接:https://www.haomeiwen.com/subject/xgarnxtx.html