IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    细致入微的Python入门知识(下)

    summer发表于 2016-06-06 13:20:32
    love 0

    今天开始Python入门知识(下)的学习,主要包括dict类型、Set类型、函数等知识点。

    1.dict类型

    dict的作用是建立一组 key 和一组 value 的映射关系,dict的key是不能重复的。

    (1)dict的特点

    查找速度快,dict不论多少元素,速度都一样,list的查找速度随着元素增加而下降;
    存储的key-value对是没有顺序的,dict内部是无序的,不能用dict存储有序的集合;
    key不可重复不可变;
    内存占用大;

    (2)访问dict

    dict是Python中保存key-value的一种类型,dict就是通过key来查找 value的。

    data = {
    'A': 1,
    'B': 2
    }

    { }表示这是一个dict,最后一个 key: value的逗号可以省略。由于dict也是集合,len() 函数可以计算任意集合的大小:

    >>> len(data)
    2

    接下来我们可以使用 data[key] 的形式来查找对应的 value:

    >>> print data['A']
    1

    注意:如果key不存在,会直接报错:KeyError。
    解决方法:

    方法一:
    用in操作符判断key是否存在:
    if 'A' in data:
    print data['A']

    方法二:
    使用dict本身提供的一个get方法,key不存在返回None:
    >>> print data.get('A')
    1
    >>> print data.get('C')
    None

    (3)更新dict

    >>> data['C'] = 3
    >>> print data
    {'A': 1, 'B': 2, 'C': 3}

    (4)遍历dict
    遍历dict可以通过for循环实现。
    直接使用for循环遍历dict的key:

    >>> data = {'A': 1, 'B': 2, 'C': 3}
    >>> for key in data:
    ... print key
    ...
    A
    B
    C

    2.Set类型

    Set的元素无序不重复。

    (1)Set的特点

    Set的内部结构和dict类似,唯一区别就是不存储value,故判断一个元素是否在set中速度很快;
    Set存储的元素必须是不变对象;
    Set存储的元素是无序的;

    (2)创建Set

    创建Set的方式是调用set()并传入一个 list,list的元素将作为set的元素:

    >>> data = set(['A', 'B', 'C'])
    >>> print data
    set(['A', 'C', 'B'])

    注意:Set不能包含重复的元素,所以当我们传入包含重复元素的list时,set会自动去掉重复的元素。

    (3)访问Set

    Set存储的是无序集合,所以我们没法通过索引来访问。访问Set中的某个元素实际上就是判断一个元素是否在set中,如下:

    >>> data = set(['A', 'B', 'C'])

    # 我们可以用in操作符判断:
    >>> 'B' in data
    True
    >>> 'D' in data
    False

    (4)添加新元素到Set

    # 添加元素时,用Set的add()方法
    >>> data = set(['A', 'B', 'C'])
    >>> data.add('D')
    >>> data.add('A') # 添加的元素已经存在于set中,add()不会报错,但是不会加进去了
    >>> print data
    set(['A', 'B', 'C', 'D'])

    (5)删除Set集合中元素

    # 删除元素时,用set的remove()方法
    >>> data = set(['A', 'B', 'C'])
    >>> data.remove('C') # 如果删除的元素不存在set中,remove()会报错,建议提前进行判断
    >>> print data
    set(['A', 'B'])

    (5)遍历Set

    通过 for 循环实现。

    >>> data = set(['A', 'B', 'C'])
    >>> for letter in data:
    ... print letter
    ...
    A
    B
    C

    3.函数

    (1)系统内置函数

    Python内置了很多有用的函数,我们可以直接调用。

    可以直接从Python的官方网站查看文档:

    https://docs.python.org/2/library/functions.html

    例如比较函数cmp(x, y):

    # 需要两个参数,x<y返回-1,x==y返回0,x>y返回1
    >>> cmp(5, 10)
    -1

    还有其他常用函数 abs()函数是求绝对值的函数、 int()函数可以把其他数据类型转换为整数、str()函数可以把其他类型转换成str,这里不再赘述。

    (2)自定义函数

    定义一个函数需要使用def语句,函数的返回值用return语句返回。

    # 我们自定义一个求最大值的my_max函数:
    def my_max(x, y):
    if x >= y:
    return x
    else:
    return y

    一旦执行到return时,函数就执行完毕,并将结果返回。如果没有return语句,函数执行完毕后会返回None(return None可以简写为return)。

    (3)定义可变参数

    def my_num(*num):
    print num

    然后调用my_num函数:

    >>> my_num()
    ()
    >>> my_num('A')
    ('A',)
    >>> my_num('A', 'B')
    ('A', 'B')

    4.切片

    (1)对list进行切片

    取一个list的部分元素的操作

    # 取前3个元素
    >>> data = ['A', 'B', 'C', 'D']
    # 对list进行切片,L[0:3]表示,从索引0开始取,直到索引3(不包括3)为止。
    >>> data[0:3] # 也可以写成 data[:3]
    ['A', 'B', 'C']

    L[:]实际上复制出了一个新list。

    (2)倒序切片

    >>> data = ['A', 'B', 'C', 'D']
    >>> data[-3:-1]
    ['B', 'C']

    (3)对字符串切片

    字符串可以用切片操作,只是操作结果仍是字符串:

    >>> 'ABCDE'[:3]
    'ABC'
    >>> 'ABCDE'[-3:]
    'CDE'
    >>> 'ABCDE'[::2]
    'ACE'

    5.迭代

    在Python中,迭代就可以理解为for循环,迭代是通过 for … in 来完成的,迭代操作就是对于一个集合,集合有如下几种:

    1. 有序集合:list,tuple,str 和 unicode;
    2. 无序集合:set
    3. 无序集合并且具有 key-value 对:dict

    (1)索引迭代

    迭代永远是取出元素本身,而非元素的索引。
    对于有序集合,我们可以使用enumerate() 函数在 for 循环中拿到索引:

    >>> data = ['A', 'B', 'C']
    >>> for index, value in enumerate(data):
    ... print index, '-', value
    ...
    0 - A
    1 - B
    2 - C

    (2)values()方法迭代dict的value

    data = { 'A': 1, 'B': 2, 'C': 3}
    print data.values()
    # [1, 2, 3]
    for v in data.values():
    print v
    # 1
    # 2
    # 3

    用 itervalues() 方法替代 values() 方法,迭代效果完全一样。values() 方法把一个 dict 转换成了包含 value 的list。但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。

    (3)items()方法迭代dict的key和value

    >>> data = { 'A': 1, 'B': 2, 'C': 3}
    >>> for key, value in data.items():
    ... print key, ':', value
    ...
    A : 1
    B : 2
    C : 3

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

    6.列表生成式

    生成列表。

    >>> range(1, 6)
    [1, 2, 3, 4, 5]



沪ICP备19023445号-2号
友情链接