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

[经验分享] python笔记--列表

[复制链接]

尚未签到

发表于 2018-8-12 07:20:01 | 显示全部楼层 |阅读模式
  列表list
  Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。
  一、定义列表
>>> list1=['a','b','c',1,2,3]  
>>> list2=['a','b','c',[1,2,3]]
  从上面两个列表,可以总结出列表的特点如下:
  1.用中括号括起来,元素之间用逗号分隔。
  2.字符串需要使用单引号,整数不用。
  3.list里面的元素的数据类型也可以不同。
  4.list元素也可以是另一个list。
  二、列表的基本操作
  #查看列表元素个数
>>> len(list1)  
6
  #用索引来访问列表中每一个位置的元素,索引是从0开始的
>>> list1[0]  
'a'
  
>>> list1[1]
  
'b'
  
>>> list1[-1]
  
3
  
>>> list2[-1][0]
  
1
  注意:最后一个元素的索引为-1,以此类推,倒数第二个的为-2……;索引是不能超出范围的否则会报一个IndexError错误。
  #追加一个元素
>>> list1.append(4)  
>>> list1
  
['a', 'b', 'c', 1, 2, 3, 4]
  #删除指定内容的元素
>>> list1.remove('a')  
>>> list1
  
['b', 'c', 1, 2, 3, 4]
  #根据索引删除元素,如果不指定索引,默认从最后一个开始删除。
>>> list1.pop(0)  
'b'
  
>>> list1
  
['c', 1, 2, 3, 4]
  #统计列表中相同元素的个数
>>> list1.count(1)  
1
  #统计指定元素的索引号
>>> list1.index('c')  
0
  #在指定索引的元素之后添加一个元素
>>> list1.insert(1,'d')  
>>> list1
  
['c', 'd', 1, 2, 3, 4]
  #列表倒序排序
>>> list1.reverse()  
>>> list1
  
[4, 3, 2, 1, 'd', 'c']
  #按照元素大小升序排序
>>> list1.sort()  
>>> list1
  
[1, 2, 3, 4, 'c', 'd']
  #把一个列表扩展到另一个列表中
>>> list1.extend(list2)  
>>> list1
  
[1, 2, 3, 4, 'c', 'd', 'a', 'b', 'c', [1, 2, 3]]
  #列表连接
>>> list1+list2  
[1, 2, 3, 4, 'c', 'd', 'a', 'b', 'c', [1, 2, 3], 'a', 'b', 'c', [1, 2, 3]]
  注意:列表中的元素没有发生变化
  #清空列表
>>> list1=[]  
>>> len(list1)
  
0
  总结:
  列表的索引号是从0开始的;
  可以使用dir()查看列表的使用方法,括号中输入列表的名称;
  使用help()查看操作的帮助,括号中输入”列表名.操作”,例如:
>>> help(list1.insert)  
Help on built-in function insert:
  

  
insert(...)
  
L.insert(index, object) -- insert object before index
  补充:
  有时候我们需要将一个列表重新排序的结果定义给一个新的列表,而且不改变原列表,就用到了sorted()和reversed()
  sorted()是python的内置函数,并不是可变对象(列表、字典)的特有方法,sorted()函数需要一个参数(参数可以是列表、字典、元组、字符串),无论传递什么参数,都将返回一个以列表为容器的返回值,如果是字典将返回键的列表,例如:
>>> a=[4,3,2,1]  
>>> b=sorted(a)   #实现升序排序后定义给另一个列表
  
>>> b
  
[1, 2, 3, 4]
  
>>> a#列表a并没有发生变化
  
[4, 3, 2, 1]
  

  
>>> c=sorted(b,reverse=True)   #实现降序排列后定义给另一个列表
  
>>> c
  
[4, 3, 2, 1]
  
>>> a
  
[4, 3, 2, 1]
  reversed()也是python的一个内置函数,作用是返回序列的反向访问的迭代器,参数可以是列表,元组,字符串,不改变原对象,例如:
>>> a=[1,2,3,4]  
>>> b=reversed(a)
  
>>> b
  
<listreverseiterator object at 0x0000000000602B00>  #b是一个迭代器
  
>>> c=list(reversed(a))  #实现“反转”一个列表的结果定义给另一个列表,实现列表reverse方法同样的功能
  
>>> c
  
[4, 3, 2, 1]
  
>>> a
  
[1, 2, 3, 4]
  
  三、切片
  可以使用分片操作来访问一定范围内的元素。分片通过冒号隔开的两个索引来实现:
  分片对于提取序列的一部分很有用。切片的原则是”取头不取尾”,即第一个索引是要提取的第一个元素的编号,而最后的索引则是分片之后剩余部分的第一个元素的编号。
  例如:
>>> list2  
['a', 'b', 'c', [1, 2, 3]]
  
>>> list2[1:3]
  
['b', 'c']
  如果不指定第一个索引,默认从头开始切取;如果不指定第二个索引,默认切到最后,例如:
>>> list2[:3]  
['a', 'b', 'c']
  
>>> list2[2:]
  
['c', [1, 2, 3]]
  #步长切片
  进行分片的时候,分片的开始和结束需要进行指定,按照步长逐个遍历序列的元素,然后返回开始和结束点之间的所有元素。例如:
>>> list3=[0,1,2,3,4,5,6,7,8,9]  
>>> list3[::2]
  
[0, 2, 4, 6, 8]
  
>>> list3[1::2]
  
[1, 3, 5, 7, 9]
  
  四、列表生成式
  需要生成一个1~10的列表,可以利用内置函数range(),例如:
>>> a=range(1,10)  
>>> type(a)
  
<type 'list'>
  
>>> a
  
[1, 2, 3, 4, 5, 6, 7, 8, 9]
  那如果需要生成1~10每个数平方的列表,那我们可以直接利用如下一行代码来实现:
>>> [x*x for x in range(1,10)]  
[1, 4, 9, 16, 25, 36, 49, 64, 81]
  for循环后面可以加上条件,例如:
[x*x for x in range(1,10) if x%2==1]    #得到1~10所有基数平方组成的列表  由此可以想到,如果利用for循环对列表进行处理得到另一个列表完全可以有一行代码来简单实现,例如:
>>> a=[4,3,5,7,2,8]  
>>> [x for x in a if x > 3]
  
[4, 5, 7, 8]
  
  
  练习
  1.创建一个空列表
  >>> lst1=[]
  2.添加10个列表元素,包含字符串,数字
  >>> lst1=[0,1,2,3,4,'a','b','c','d','e']
  3.从第5个索引号起插入5个元素
  >>> lst1.insert(5,5)
  >>> lst1.insert(5,6)
  >>> lst1.insert(5,7)
  >>> lst1.insert(5,8)
  >>> lst1.insert(5,9)
  4.分别用切片方法取出前5个,和后5个
  >>> lst1[:5]
  [0, 1, 2, 3, 4]
  >>> lst1[-5:]
  ['a', 'b', 'c', 'd', 'e']
  5.分别取出奇数项,和偶数项
  >>> lst1.sort()
  >>> lst1[::2]
  [0, 2, 4, 6, 8, 'a', 'c', 'e']
  >>> lst1[1::2]
  [1, 3, 5, 7, 9, 'b', 'd']
  6.print出列表元素个数
  >>> len(lst1)
  15
  7.删除某个元素
  >>> lst1.remove('a')
  8.删除列表最后一个元素
  >>> lst1.pop(-1)
  'e'
  9.删除列表第5个元素
  >>> lst1.pop(4)
  4

运维网声明 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-550347-1-1.html 上篇帖子: Python13 字符转编码 下篇帖子: python 学习笔记01-boyhack
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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