设为首页 收藏本站
查看: 772|回复: 0

[经验分享] Python:数据结构(list, tuple, Dict & Set)

[复制链接]

尚未签到

发表于 2015-12-3 09:55:46 | 显示全部楼层 |阅读模式
  list: Python中内置的有序数据结构,即数组。由于Python是动态语言,因此数组元素的类型没有限定。




  • classmates = [“Michael”, “David”,”Bob”,”Tracy”]
  • 空列表:empty_list = []
  • 使用负数来表示倒叙,即索引-1来表示最后一项:classmates[-1]打印出Tracy,classmates[-4]打印出Michael,注意倒叙不是从0开始,因为-0和0没区别。
  • list.insert(index, data) 在指定的位置插入指定内容。
  • list.append(new_list) 在list结尾将整个new_list作为一个元素插入。
  • list.extend(new_list)在list结尾将new_list的元素逐一插入。
  • list.pop()返回并删除list的最后一个元素。




推导公式的多层嵌套:

# 例:打印1~999中个位数和百位数相同的数字,每个for/if语句都是包含的关系。




1 print(x*100 + y*10 + z for x in range(10) for y in range(10) for z in range(10) if x > 0 and x == z)

for语句中获得list下标:enumerate(list)会将list转换成(index,item)的tuple。





DSC0000.gif DSC0001.gif


1 >>> L=['abc','bcd','cde']
2 >>> for n in enumerate(L):
3 ...     print(n)
4 ...
5 (0, 'abc')
6 (1, 'bcd')
7 (2, 'cde')
8  >>> for index,item in enumerate(L):
9 ...     print(index,',',item)
10 ...
11 0 , abc
12 1 , bcd
13 2 , cde
click me  




tuple:不可变的列表



  • list使用的是中括号[]声明,tuple使用小括号()声明。
  • 由于tuple不可变,自然也就无法使用insert()/append()/extend()/pop()等方法。
  • ()可以创建不同元素数量的tuple,但注意当tuple的元素只有一个的时候,要使用逗号:a_tuple=(1,)

    • 因为没有逗号的话会被当做是四则运算中的括号,为免混淆会多了一个逗号。


  • tuple的不可变指的是元素地址的不可变,而元素如果是引用类型,则所引用的地址是可变的。例如tuple的元素中有一个list,则该list的内容可变。




dict (字典/dictionary):



  • key-value的格式,其实就是JSON。





  • 1 dict1 = {
    2     'Adam' : 95,
    3     'Lisa' : 85,
    4     'Bart' : 59,
    5     'Paul' : 75
    6 }
    click me
  • 可通过BIF: len(dict) 查看dict的长度。


dict的三个特点:



  • 查找速度:比list快,相对地占用较大内存。
  • 元素无序。
  • key必须是不可变且不可重复,如字符串、整数、浮点数




操作dict



  • 添加一个item: dict[‘key’]=value
  • 获取dict的key集合:dict.keys()
  • 获取dict的values集合:dict.values()
  • 获取个key-value pair的tuple:dict.items()




  dict的第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。
  不过dict的查找速度快不是没有代价的,dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。




set



  • 无序、不重复(对大小写敏感)
  • 可通过BIF:set(list)来创建
  • 通过in来判断item是否在set中:’Paul’ in s >> True


  set的内部结构和dict很像,唯一区别是不存储value,因此,判断一个元素是否在set中速度很快。
  set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的。
  
  参考资料:


  • Python.org
  • 廖雪峰的个人网站

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-146668-1-1.html 上篇帖子: 使用pycharm远程调试python代码 下篇帖子: 【转载】 Python动态生成变量
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表