zoukankan      html  css  js  c++  java
  • <潭州教育>-Python学习笔记@基本数据类型:元祖&字典

    Python基本数据还有元祖和字典

    元祖(tuple)是Python的基本数据类型,用()表示,元素之间用‘,’隔开,元祖一旦创建,就不能改变

    In [45]: s = ('Stone','Stone','Cathy')  ###元祖可以有重复元素
    
    In [46]: s
    Out[46]: ('Stone', 'Stone', 'Cathy')
    
    In [47]: s.count('Stone')  ## 元素计数
    Out[47]: 2
    
    In [48]: s.count('S')  ###没有的话返回0
    Out[48]: 0
    
    In [49]: s.index('Stone')  ##查找索引
    Out[49]: 0
    
    In [50]: s.index('Stone',1)  
    Out[50]: 1
    

    字典(dict)由键值对组成的数据类型,相比较与其他数据类型,字典查找速度快。字典默认没有排序(不需要排序),根据key查找value。

          字典                           list

    -查找和插入非常快,不会随着key的增加而增加        查找和插入的时间随元素的增加而增加

    -需要占用大量的内存,内存浪费多                占用空间少,浪费内存少

    -key不可变                          通过下表查询

    -默认无序                         有序

    In [74]: dit
    Out[74]: {'age': 18, 'marry': 'no', 'work': 'yes'}
    
    #
    #1
    In [75]: dit['book'] = 'note' ##增加元素 In [76]: dit Out[76]: {'age': 18, 'book': 'note', 'marry': 'no', 'work': 'yes'}
    #2 In [
    77]: dit.update({'Station':'quanta'}) ### 更新一个字典类型 In [78]: dit Out[78]: {'Station': 'quanta', 'age': 18, 'book': 'note', 'marry': 'no', 'work': 'yes'}
    ##3生成一个字典
    In [90]: dit.fromkeys([1,2,2,3,4],3)  ## 传入一个可迭代对象,生成一个字典
    Out[90]: {1: 3, 2: 3, 3: 3, 4: 3}
    #
    In [81]: dit.pop('Station') ##删掉一个元素,返回元素的值
    Out[81]: 'quanta'
    
    In [82]: dit.popitem()  ## 删掉一个键值对,以元祖形式返回删掉的键值对
    Out[82]: ('work', 'yes')
    In [79]: dit.clear()  ##清空字典
    
    #元素值
    In [84]: dit.items()  ##返回一个类似集合类型的对象,一般用于对字典键或者值的遍历
    Out[84]: dict_items([('age', 18), ('book', 'note'), ('marry', 'no')])
    
    In [86]: dit.values()
    Out[86]: dict_values([18, 'note', 'no'])
    

    #a set-like object providing a view on D's keys In [87]: dit.keys() Out[87]: dict_keys(['age', 'book', 'marry'])
    In [91]: dit.get('age')  ###判断元素是否存在,不存在不报错,会返回None。
    Out[91]: 18

    #其他 In [89]: dit.copy() ##拷贝 Out[89]: {'age': 18, 'book': 'note', 'marry': 'no'}
    #补充:
    
    In [107]: dit
    Out[107]: {'age': 18, 'book': 'note', 'books': 45, 'marry': 'no'}
    
    In [108]: dit.setdefault('books',45)  ##字典中有这个元素,则返回这个元素,字典不变
    Out[108]: 45
    
    In [109]: dit
    Out[109]: {'age': 18, 'book': 'note', 'books': 45, 'marry': 'no'}
    
    In [110]: dit.setdefault('name','Stone') ##字典没有这个元素,返回设置的值,字典相应增加
    Out[110]: 'Stone'
    In [111]: dit
    Out[111]: {'age': 18, 'book': 'note', 'books': 45, 'marry': 'no', 'name': 'Stone'}
    
    
    

      




    字典遍历:

    for i in dit: ## 效率高
      print i ,dit[i]

    for k,v in dit.items(): ##效率低
      print k ,v

    集合(set)

     特点:

    -无序

    -元素不重复

    功能:

    -关系测试

    -去重

    ###序列操作
    In [117]: lst = [1,2,3,4,5,5,6,7,7,7,8]
    
    In [118]: lst = set(lst)
    
    In [119]: lst,type(lst)
    Out[119]: ({1, 2, 3, 4, 5, 6, 7, 8}, set)
    
    In [120]: lst.add(9)
    
    In [121]: lst
    Out[121]: {1, 2, 3, 4, 5, 6, 7, 8, 9}
    
    In [122]: lst.remove(8)
    
    In [123]: lst.pop()
    Out[123]: 1
    
    In [124]: lst.copy()
    Out[124]: {2, 3, 4, 5, 6, 7, 9}
    

     

    ###关系操作
    
    
    In [126]: x = {1,2,3,4}
    
    In [127]: y = {3,4,5,6}
    
    In [130]: x & y  ##交集  ==  x.intersection(y)
    Out[130]: {3, 4}
    
     ##注意:并集不能用and 
    In [129]: x and y
    Out[129]: {3, 4, 5, 6}
    
    In [131]: x | y  ##并集 ==  x.union(y)
    Out[131]: {1, 2, 3, 4, 5, 6}
    
    In [132]: x - y  ##差集   == x.difference(y)
    Out[132]: {1, 2}
    
    In [133]: x ^ y   ##对称差集  ==x.symmetric_difference(y)
    Out[133]: {1, 2, 5, 6}
    
    ##判断
    In [140]: x.issubset(y)  #x 是y 的子集
    Out[140]: False
    
    In [141]: x.issuperset(y) ##x 是否包含y
    Out[141]: False
    

      

     

       
       
  • 相关阅读:
    博客是一种心情
    双显示器和双鼠标
    C++ Primer Plus 第六版 代码笔记
    Bug,昂首走进2005
    让万能五笔2004免费版改首页的功能见鬼去吧。
    Gmail提供POP3和SMTP已经老长时间了
    快过年回家了,发点实用的东西给大家
    关于博客园Post的时候排版的一点小建议
    在.Net下进行MicroStation(GG)的开发(一)
    验证域的另一方法
  • 原文地址:https://www.cnblogs.com/Stone-Fei/p/8463120.html
Copyright © 2011-2022 走看看