zoukankan      html  css  js  c++  java
  • 第二章 python中重要的数据结构(下)

    二、元组(tuple):不可变序列 

    跟list一样,也是一种序列,唯一不同的是,元组元素不能被修改,通常用(, ,)表示元组,也可以不加括号。

     1 #创建元组
     2 >>> 1,2,3
     3 (1, 2, 3)
     4 >>> t = (1,2,3)
     5 >>> t
     6 (1, 2, 3)
     7 #创建空元组
     8 >>> t1 = () 
     9 >>> t1
    10 ()
    11 #创建只有一个元素的元组,这里注意必须带上逗号
    12 >>> t2 = (1,)
    13 >>> t2
    14 (1,)
    15 #也可以用tuple()函数创建元组
    16 >>> b = tuple('abc')
    17 >>> b
    18 ('a', 'b', 'c')

    【访问】:跟list一样,支持索引和分片访问。

    【区别】:元组和列表的区别及适用的地方?

      1、元组可以充当字典中的键,列表则不可

      2、元组不像list那样有内建函数。

    三、集合(set) 

    【定义】:集合是一组无序的不重复的值

     1 >>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
     2 >>> print(basket)                      # show that duplicates have been removed
     3 {'orange', 'banana', 'pear', 'apple'}
     4 >>> 'orange' in basket                 # fast membership testing
     5 True
     6 >>> 'crabgrass' in basket
     7 False
     8 
     9 >>> # Demonstrate set operations on unique letters from two words
    10 ...
    11 >>> a = set('abracadabra')
    12 >>> b = set('alacazam')
    13 >>> a                                  # unique letters in a
    14 {'a', 'r', 'b', 'c', 'd'}
    15 >>> a - b                              # letters in a but not in b
    16 {'r', 'd', 'b'}
    17 >>> a | b                              # letters in either a or b
    18 {'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
    19 >>> a & b                              # letters in both a and b
    20 {'a', 'c'}
    21 >>> a ^ b                              # letters in a or b but not both
    22 {'r', 'd', 'b', 'm', 'z', 'l'}

    四、字典(Dictionaries) 

    【定义】字典是一组键值对,其中key可以是数字、字符串、元组。

    【创建】用大括号表示,key-value结构,键值之间用冒号隔开,不同的键值对之间通过逗号分隔,如下:

    1 >>> dict = {'Tome':'1341','Helen':'2030'}
    2 >>> dict
    3 {'Tome': '1341', 'Helen': '2030'}
    4 >>> dict1 = {}
    5 >>> dict1
    6 {}

    【基本操作】

      len(dict)返回字典键值对数量

      dict[k]返回key为k的值

      dict[k]改变key为k的值

      del dict[k]删除键为k的项

      k in dict检查dict中是否含有键为k的项

      1 #!/usr/python
      2 
      3 people = {
      4     'Alice':{
      5         'phone':'2341',
      6         'addr':'Foo drive 23'
      7     },
      8 
      9     'Beth':{
     10         'phone':'2003',
     11         'addr':'Bar street 32'
     12     },
     13 
     14     'Cecil':{
     15         'phone':'3212',
     16         'addr':'Baz avenue 90'
     17     }
     18 
     19 }
     20 
     21 labels = {
     22     'phone':'phone number',
     23     'addr':'address'
     24 }
     25 
     26 name = raw_input('Name: ')
     27 request = raw_input('Phone number(p) or address(a)? ')
     28 if request == 'p':
     29     key = 'phone'
     30 if request == 'a':
     31     key = 'addr'
     32 
     33 if name in people:
     34     print "%s's %s is %s." % (name,labels[key],people[name][key])

    运行结果:

    1 [root@darren python]# python dict.py 
    2 Name: Alice
    3 Phone number(p) or address(a)? p
    4 Alice's phone number is 2341.

    【方法】

     1、clear()方法:清空字典所有项,原地操作。

     1 >>> x = {}
     2 >>> y = x #并不是简单的赋值,这里可以理解为x,y共同指向一个字典
     3 >>> x['key']='value'
     4 >>> x
     5 {'key': 'value'}
     6 >>> y
     7 {'key': 'value'}
     8 >>> x = {}
     9 >>> x
    10 {}
    11 >>> y
    12 {'key': 'value'}
     1 >>> x = {}
     2 >>> y = x
     3 >>> x['key'] = 'value'
     4 >>> x
     5 {'key': 'value'}
     6 >>> y
     7 {'key': 'value'}
     8 >>> x.clear() #注意clear方法清除原地
     9 >>> x
    10 {}
    11 >>> y
    12 {}

    2、copy()方法:返回一个相同值得新字典,浅复制

    1 >>> a = {'username':'admin','machines':['foo','bar']}
    2 >>> b = a.copy()
    3 >>> b['username']='lsls'
    4 >>> b['machines'].remove('bar')
    5 >>> a          #替换不能改变值,但是修改可以改变原字典值
    6 {'username': 'admin', 'machines': ['foo']} 

    可以通过深复制,让原字典保持不变:

    1 >>> from copy import deepcopy
    2 >>> d = {}
    3 >>> d['name'] = ['aa','bb']
    4 >>> c = d.copy()
    5 >>> dc = deepcopy(d)
    6 >>> dc['name'].append('cc')
    7 >>> d
    8 {'name': ['aa', 'bb']}

    3、get(key)方法:通过key访问字典值,如果字典不存在key,不会报错,返回none

    4、keys()和iterkeys()方法:keys方法将字典中的键以列表形式返回,而iterkeys则返回针对键的迭代器

    5、pop(key)方法:删除指定key的键值项

    6、popitem()方法:随机删除一个键值项

    7、values()和itervalues()方法:values方法将字典中的键以列表形式返回,而itervalues则返回针对键的迭代器

    8、update(item)方法:利用一个字典项更新另一个字典

    1 >>> d = {'title':'python study','url':'www.python.com'}
    2 >>> x = {'title':'.net study'} 
    3 >>> d.update(x)
    4 >>> d
    5 {'url': 'www.python.com', 'title': '.net study'}

    至此,python中常用的数据结构就学习的差不多了。

       

  • 相关阅读:
    一道leetcode题的收获如何比较字符串的大小重写sort中的compare[](string &s,string &t){return s+t>t+s};
    unsigned int表示负数问题
    fork()和printf()几点注意细节
    32位机中数据问题
    C++隐藏机制
    ||,&&,++i解答
    enum忽略知识点
    硬链接与软链接
    20145215实验五 Java网络编程及安全
    证书与keytool
  • 原文地址:https://www.cnblogs.com/mysql-dba/p/4853686.html
Copyright © 2011-2022 走看看