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

[经验分享] 第一章 python中重要的数据结构(上)

[复制链接]

尚未签到

发表于 2015-11-30 13:37:21 | 显示全部楼层 |阅读模式
  最近,由于工作需要,使用python开发公司的运维自动化平台,所以找本书来并结合官方手册,开始python的学习之旅。
  一、列表
  【含义】:列表用中括号表示,通过逗号进行分隔一组数据(可以为不同的数据类型),如以下的声明:



1 >>> language = ['chinese','english','japanese']
2 >>> contries = ['China','Amercia','England','Japan']
3
4 >>> edward = ['Edward Gumby',42]  #不同的数据类型
5 >>> john = ['John Smith',50]
6 >>> database = [edward,john] #列表可以嵌套
  【操作】:访问、插入、删除、求最大值最小值及长度等
  1、访问:可以通过索引或分片进行列表的遍历访问,索引可以访问某个位置的值,分片可以灵活的访问一定范围的值,如下所示:



1  >>> language = ['chinese','english','japanese']
2  # 索引访问  
3  >>> language[0]
4  'chinese'
5
6  # 分片访问
7  # 第一个索引元素包括在分片中,第二个索引不包括在分片中
8  # 可以设置分片的步长
9  >>> language[::]
10  ['chinese', 'english', 'japanese']
11  >>> language[0:3]
12  ['chinese', 'english', 'japanese']
13  >>> language[0:2]
14  ['chinese', 'english']
15  >>> language[1:2]
16  ['english']
17  # 设置步长为2
18  >>> num = [1,2,3,4,5,6,7,8,9]
19  >>> num[0:9:2]
20  [1, 3, 5, 7, 9]
21  >>> num = [1, 2, 3]
22  >>> max(num)
23  3
24  >>> min(num)
25  1
26  >>> len(num)
27  3
  2、修改、插入和删除操作,由此看来列表是可以进行修改的。



1 #修改列表某个元素:索引赋值
2 >>> num = [1,2,3]
3 >>> num[0]=5  #必须为存在的位置索引赋值,否则报错
4 >>> num
5 [5, 2, 3]
6
7 #修改列表某段范围的值:分片赋值
8 >>> num[2:]=[6,7,9] #分片赋值元素个数可以不等长
9 >>> num
10 [5, 2, 6, 7, 9]
11
12 #删除某个元素
13 >>> del num[4]
14 >>> num
15 [5, 2, 6, 7]
  【方法】对于列表,python内置了诸多方法供操作,主要常用的有以下几个:



1 #append方法:用于在列表最后添加元素,该方法直接修改原列表并返回修改完后的新列表
2 >>> str = ['a','b','c','d']
3 >>> str.append('e')
4 >>> str
5 ['a', 'b', 'c', 'd', 'e']
6
7 #count方法:统计某个元素在列表中出现的次数
8 >>> str = ['a','b','c','d']
9 >>> str.count('a')
10 1
11
12 #extend方法:list.extend(L),L指的是列表对象
13 #用另一个列表扩展一个列表,相当于两个列表连接,
14 #但是又不同于连接操作,因为extend方法直接修改原列表并返回,
15 #连接操作不影响原有的列表值
16 >>> str1 = ['hello,']
17 >>> str2 = ['world']
18 >>> str1.extend(str2)
19 >>> str1
20 ['hello,', 'world']
21
22 >>> str3 = ['a']
23 >>> str4 = ['5']
24 >>> str3 = str3+str4 #效率没有extend高
25 >>> str3
26 ['a', '5']
27
28 #index方法:返回匹配项的第一个索引位置
29 >>> knight = ['we','you','we','me','he']
30 >>> knight.index('we')
31 0
32
33 #insert方法:list.insert(i, x)插入x到该i位置
34 >>> knight.insert(1,'she')
35 >>> knight
36 ['we', 'she', 'you', 'we', 'me', 'he']
37
38 #remove方法:list.remove(x)
39 #删除列表中为X的第一个出现元素
40 >>> knight = ['we', 'she', 'you', 'we', 'me', 'he']
41 >>> knight.remove('we')
42 >>> knight
43 ['she', 'you', 'we', 'me', 'he']
44
45 #reverse方法:将元素倒序存储
46 >>> str = ['a', 'b']
47 >>> str.reverse()
48 >>> str
49 ['b', 'a']
50
51 #sort方法:list.sort(key=None, reverse=False)
52 #直接改变原列表顺序,而不是改变副本,对于这种需求如
53 #仅仅对副本进行排序,不改变原列表不能直接用sort
54 >>> num = [1,3,2,4]
55 >>> num.sort()
56 >>> num
57 [1, 2, 3, 4]
58
59 #pop方法:list.pop()
60 #删除指定索引位置的元素值,并返回该值
61 >>> num = [1, 2, 3, 4]
62 >>> num.pop(3)
63 4
  【常用举例】:模拟实现堆栈操作和队列操作
  堆栈:后进先出



1 >>> stack = [3, 4, 5]
2 >>> stack.append(6)
3 >>> stack.append(7)
4 >>> stack
5 [3, 4, 5, 6, 7]
6 >>> stack.pop()
7 7
8 >>> stack
9 [3, 4, 5, 6]
10 >>> stack.pop()
11 6
12 >>> stack.pop()
13 5
14 >>> stack
15 [3, 4]
  队列:先进先出



1 >>> from collections import deque
2 >>> queue = deque(["Eric", "John", "Michael"])
3 >>> queue.append("Terry")           # Terry arrives
4 >>> queue.append("Graham")          # Graham arrives
5 >>> queue.popleft()                 # The first to arrive now leaves
6 'Eric'
7 >>> queue.popleft()                 # The second to arrive now leaves
8 'John'
9 >>> queue                           # Remaining queue in order of arrival
10 deque(['Michael', 'Terry', 'Graham'])
  

运维网声明 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-145411-1-1.html 上篇帖子: Python数据分析 EPD 下篇帖子: 17 网络客户端编程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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