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

[经验分享] 菜鸟学python之list和tuple-11818322

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2018-8-13 11:45:42 | 显示全部楼层 |阅读模式
  list
  list 是一种有序的集合,可以随时添加和删除其中的元素。list是一种对象,当我们在创建变量,并且赋值的过程可以理解成这样
  shopping=['apple','orange']
  1)创建一个list对象,对象里面同时也有很多变量名;
  2)[0]位置变量存储'apple'对象的地址,[1]位置变来那个存储'orange'对象地址
  3)创建一个shopping变量,存储list对象的地址信息;
  list常用操作
  1访问元素
  1.1用索引来访问 list 中每一个位置的元素,记得索引是从 0 开始的
>>> shopping=['apple','orange']  
>>> shopping[0]
  
'apple'
  
>>> shopping[1]
  
'orange'
  
>>> shopping[2]
  
Traceback (most recent call last):
  
  File "<pyshell#98>", line 1, in <module>
  
    shopping[2]
  
IndexError: list index out of range
  因此通过索引访问元素一定要记得不能越界,不然就会发生错误。有两种更好的方法访问最后一个元素
>>> shopping[len(shopping)-1]    #先计算长度,再减一  
'orange'
  
>>> shopping[-1]           #默认从后往前计数
  
'orange'
  1.2索引访问list中子list的元素
['apple', 'orange', ['r', 'u']]  
>>> shopping[2]
  
['r', 'u']
  
>>> shopping[2][1]
  
'u'
  可以理解成shopping变量找到了['apple', 'orange', ['r', 'u']]对象
  shopping[2]是存在于对象中用来存储['r','u']对象的地址的变量
  shopping[2]此时找到了['r','u']shopping[2][0]就是['r','u']对象中存储'r'地址的变量
  2 增加元素
  2.1 append从尾部插入
>>> shopping.append('banana')  
>>> shopping
  
['apple', 'orange', 'banana']
  2.2 insert指定位置插入
>>> shopping.insert(1,'banana')    #指定位置,前面的数字代表插入后元素所在位置  
>>> shopping
  
['apple', 'banana', 'orange', 'banana']
  
>>> id(shopping[1])
  
43203456
  
>>> id(shopping[3])        #可以看出,插入同一个值时,没有增加新对象,只是引用了源地址
  
43203456
  2.3 extend从尾部插入多个元素
>>> shopping.extend([7,8])  
>>> shopping
  
['apple', 7, 8]
  3 删除元素
  3.1 pop弹出
>>> shopping.pop()  #按顺序删除,不需要指定具体对象  
'banana'
  
>>> shopping
  
['apple', 'banana', 'orange']
  
>>> shopping.pop(1)  #也可以指定位置,必须使用索引号
  
'banana'
  
>>> shopping.pop(-1)
  
'orange'
  
>>> shopping
  
['apple']
  3.2 remove指定内容删除
>>> shopping  
['apple', 7, 8]
  
>>> shopping.remove(7)
  
>>> shopping
  
['apple', 8]
  3.3 del删除
  del是一个语句,不是一个列表的方法。可以删list对象中的变量,也可以删除list的变量
>>> del shopping[1]  
>>> shopping
  
['apple']
  
>>> del shopping
  
>>> shopping
  
Traceback (most recent call last):
  
  File "<pyshell#126>", line 1, in <module>
  
    shopping
  
NameError: name 'shopping' is not defined
  tips:这三种删除方法,都可以删除list对象中的变量,即使list对象中也有子列表;但是只有del可以删除进行操作的对象变量;
  3.4 修改元素
  直接使用赋值法
>>> shopping[1]=2  
>>> shopping
  
['apple', 2, 8]
  tuple
  tuple 一旦初始化就不能修改,比如同样是列出shopping的物品单:
>>> shopping=('apple','orange')  
>>> shopping
  
('apple', 'orange')
  现在,shopping 这个 tuple 不能变了,它也没有 append(),insert()这样的方法。其他获取元素的方法和 list 是一样的,你可以正常地使用shopping[0] , shopping[-1] ,但不能赋值成另外的元素。
  不可变的 tuple 有什么意义?因为 tuple 不可变,所以代码更安全。如果可能,能用 tuple 代替 list 就尽量用 tuple
  tips:
  
  只有 1 个元素的 tuple 定义时必须加一个逗号 , ,来消除歧义:
>>> t=(1)  
>>> t
  
1
  
>>> t = (1,)
  
>>> t
  
(1,)
  Python 在显示只有 1 个元素的 tuple 时,也会加一个逗号 , ,以免你误解成数学计算意义上的括号
  之前提到过tuple是不可变对象
>>> shopping[1]=(2)  
Traceback (most recent call last):
  
  File "<pyshell#149>", line 1, in <module>
  
    shopping[1]=(2)
  
TypeError: 'tuple' object does not support item assignment 对象不支持赋值
  tuple对象中的用来存储地址的变量名一旦固定就不能改变,当我们尝试赋值一个不可变对象给tuple内部变量时就会发生错误;那是不是赋值一个可变对象,就可以改变元素的值呢
>>> t=('a','b',['a','b'])  
>>> t
  
('a', 'b', ['a', 'b'])
  
>>> id(t[2][1])
  
6326368
  
>>> id(t[1])   #t[1]和['a','b']对象中的[1]引用同一个对象 'b'
  
6326368
  
>>> t[2][0]='x'
  
>>> t
  
('a', 'b', ['x', 'b'])
   DSC0000.png
  小结
  不可变对象内部变量不可变
  改变的其实是可变list对象中的元素,而tuple中指向list的地址没有发生改变,有点类似于系统编程中操作系统实现不一样,但是给上层提供的api是一样。
  

运维网声明 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-551146-1-1.html 上篇帖子: python 自动化运维 Paramiko 模块 下篇帖子: 菜鸟学python之变量类型和对象
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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