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

[经验分享] python中强大的list

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-12-1 03:54:45 | 显示全部楼层 |阅读模式
  前面的学习中,我们已经知道了两种python的数据类型:int和str。再强调一下对数据类型的理解,这个世界是由数据组成的,数据可能是数字(注意,别搞混了,数字和数据是有区别的),也可能是文字、或者是声音、视频等。在python中(其它高级语言也类似)把状如2,3这样的数字划分为一个类型,把状如“你好”这样的文字划分一个类型,前者是int类型,后者是str类型(这里就不说翻译的名字了,请看官熟悉用英文的名称,对日后编程大有好处,什么好处呢?谁用谁知道!)。
  前面还学习了变量,如果某个变量跟一个int类型的数据用线连着(行话是:赋值),那么这个变量我们就把它叫做int类型的变量;有时候还没赋值呢,是准备让这个变量接收int类型的数据,我们也需要将它声明为int类型的变量。不过,在python里面有一样好处,变量不用提前声明,随用随命名。
  这一讲中的list类型,也是python的一种数据类型。翻译为:列表。下面的黑字,请看官注意了:
  LIST在python中具有非常强大的功能。

定义
  在python中,用方括号表示一个list,[ ]
  在方括号里面,可以是int,也可以是str类型的数据,甚至也能够是True/False这种布尔值。看下面的例子,特别注意阅读注释。
  

>>> a=[]        #定义了一个变量a,它是list类型,并且是空的。  
>>> type(a)
  
   #用内置函数type()查看变量a的类型,为list
  
>>> bool(a)     #用内置函数bool()看看list类型的变量a的布尔值,因为是空的,所以为False
  
False
  
>>> print a     #打印list类型的变量a
  
[]
  

  不能总玩空的,来点实的吧。
  

>>> a=['2',3,'qiwsir.github.io']  
>>> a
  
['2', 3, 'qiwsir.github.io']
  
>>> type(a)
  

  
>>> bool(a)
  
True
  
>>> print a
  
['2', 3, 'qiwsir.github.io']
  

  用上述方法,定义一个list类型的变量和数据。
  本讲的标题是“有容乃大的list”,就指明了list的一大特点:可以无限大,就是说list里面所能容纳的元素数量无限,当然这是在硬件设备理想的情况下。

list索引
  在字符串中,曾经给其中的字符进行编号,然后根据编号来获取某个或者某部分字符,这样的过程,就是“索引”(index)。
  

>>> url = "qiwsir.github.io"  
>>> url[2]
  
'w'
  
>>> url[:4]
  
'qiws'
  
>>> url[3:9]
  
'sir.gi'
  

  在list中,也有类似的操作。只不过是以元素为单位,不是以字符为单位进行索引了。看例子就明白了。
  

>>> a  
['2', 3, 'qiwsir.github.io']
  
>>> a[0]    #索引序号也是从0开始
  
'2'
  
>>> a[1]
  
3
  
>>> a[:2]   #跟str中的类似,切片的范围是:包含开始位置,到结束位置之前
  
['2', 3]    #不包含结束位置
  
>>> a[1:]
  
[3, 'qiwsir.github.io']
  
>>> a[-1]   #负数编号从右边开始
  
'qiwsir.github.io'
  
>>> a[-2]
  
3
  
>>> a[:]
  
['2', 3, 'qiwsir.github.io']
  

对list反转
  这个功能作为一个独立的项目提出来,是因为在编程中常常会用到。通过举例来说明反转的方法:
  

>>> alst = [1,2,3,4,5,6]  
>>> alst[::-1]    #反转
  
[6, 5, 4, 3, 2, 1]
  

  这是一种非常简单的方法,虽然我在写程序的时候常常使用,但是,我不是十分推荐,因为有时候让人感觉迷茫。python还有另外一种方法,是比较容易理解和阅读的,特别推荐之:
  

>>> list(reversed(alst))  
[6, 5, 4, 3, 2, 1]
  

  比较简单,而且很容易看懂。不是吗?
  顺便给出reversed函数的详细说明:
  

>>> help(reversed)
  
Help on>  

  
class reversed(object)
  |  reversed(sequence) -> reverse iterator over values of the sequence
  |  
  |  Return a reverse iterator
  

  它返回一个可以迭代的对象,不过是已经将原来的序列对象反转了。比如:
  

>>> list(reversed("abcd"))  
['d', 'c', 'b', 'a']
  

  很好,很强大,特别推荐使用。

对list的操作
  任何一个行业都有自己的行话,如同古代的强盗,把撤退称之为“扯乎”一样,纵然是一个含义,但是强盗们愿意用他们自己的行业用语,俗称“黑话”。各行各业都如此。这样做的目的我理解有两个,一个是某种保密;另外一个是行外人士显示本行业的门槛,让别人感觉这个行业很高深,从业者有一定水平。
  不管怎么,在python和很多高级语言中,都给本来数学角度就是函数的东西,又在不同情况下有不同的称呼,如方法、类等。当然,这种称呼,其实也是为了区分函数的不同功能。
  前面在对str进行操作的时候,有一些内置函数,比如s.strip(),这是去掉左右空格的内置函数,也是str的方法。按照一贯制的对称法则,对list也会有一些操作方法。

追加元素
  

>>> a = ["good","python","I"]  
>>> a
  
['good', 'python', 'I']
  
>>> a.append("like")        #向list中添加str类型"like"
  
>>> a
  
['good', 'python', 'I', 'like']
  
>>> a.append(100)           #向list中添加int类型100
  
>>> a
  
['good', 'python', 'I', 'like', 100]
  

  官方文档这样描述list.append()方法
  

list.append(x)  

  
Add an item to the end of the list; equivalent to a[len(a):] = [x].
  

  从以上描述中,以及本部分的标题“追加元素”,是不是能够理解list.append(x)的含义呢?即将新的元素x追加到list的尾部。
  列位看官,如果您注意看上面官方文档中的那句话,应该注意到,还有后面半句: equivalent to a[len(a):] = [x],意思是说list.append(x)等效于:a[len(a):]=[x]。这也相当于告诉我们了另外一种追加元素的方法,并且两种方法等效。
  

>>> a  
['good', 'python', 'I', 'like', 100]
  
>>> a[len(a):]=[3]      #len(a),即得到list的长度,这个长度是指list中的元素个数。
  
>>> a
  
['good', 'python', 'I', 'like', 100, 3]
  
>>> len(a)
  
6
  
>>> a[6:]=['xxoo']
  
>>> a
  
['good', 'python', 'I', 'like', 100, 3, 'xxoo']
  

  顺便说一下len(),这个是用来获取list,str等类型的数据长度的。在字符串讲解的时候也提到了。
  

>>> name = 'yeashape'  
>>> len(name)       #str的长度,是字符的个数
  
8
  
>>> a=[1,2,'a','b'] #list的长度,是元素的个数
  
>>> len(a)
  
4
  
>>> b=['yeashape']   
  
>>> len(b)
  
1
  

  这个话题还没有结束,待续。

运维网声明 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-145545-1-1.html 上篇帖子: Python filter()删除1-100内素数 下篇帖子: Python大数据依赖包安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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