鉴于Python中列表(list)的强大功能,本节及后面至少有一节都是介绍列表相关的知识,本节先介绍基本的列表知识。

一、 列表的定义

  1. 列表是一种可以修改的序列,它有点类似于c语言中的数组,在Python中,列表用中括号来表示。

  2. 下列方式都是定义列表的方式

    l1=[] # l1是空列表

    l2=[1,2,3,4] #l2数字列表

    l3=[1,2,3,‘a’,‘b’,‘c’] #l3数字和字母混合列表

    l4=[‘Hello’,l2,l3] #l4是包含字符串和列表l2、l3作为元素的混合列表,对应的列表值为:[‘Hello’, [1, 2, 3, 4], [1, 2, 3, ‘a’, ‘b’, ‘c’]]

    type(l4) #执行结果显示:<class ‘list’>

  3. 从上面定义列表的样例可以看到,列表的元素类型没有要求,可以是任意数据类型,其元素甚至还可以是列表以及后面要介绍元组、集合等,不同元素可以是不同类型;

  4. 这种可以包含其他类型对象(如列表、元组、字典等)作为元素的对象,在 Python中称为容器(container);两种主要的容器是序列(如列表和元组)和映射(如字典)。在序列中,每个元素都有编号,而在映射中,每个元素都有名称(也叫键)。有一种既不是序列也不是映射的容器,它就是集合(set)。

二、 列表的操作方法

  1. 上节介绍的所有序列的操作方法都可以用于列表;
  2. 由于列表不同于字符串和元组,列表是一种可以修改的序列,所以列表的操作方法比上章介绍的要多,主要多出了如下内容:
  1. 通过索引修改元素的值,而这是字符串和元组无法进行的。如:

    l = [‘张三’,‘19911008’,‘男’,‘本科’]

    定义了一个存储张三基本信息的列表,可以通过l[3]=’研究生’,将该列表中的学历信息修改为‘研究生’;
  2. 从列表中删除元素,只需使用del语句加列表元素位置即可,如删除性别可使用:del(l[2]) ,删除后l变为[‘张三’, ‘19911008’, ‘本科’];
  3. 方法insert用于将一个对象插入列表指定索引位置,如l.insert(2,‘男’),将上面删除性别的列表恢复了性别这个元素’;
  4. 方法pop从列表中删除一个元素(末尾为最后一个元素),并返回这一元素,不带参数就删除最后一个,带参数则删除指定位置的元素。pop是唯一既修改列表又返回一个非None值的列表方法。执行l.pop()就将列表中的学历“本科”删除并返回这个字符串;
  5. 方法extend可使用一个列表来扩展另一个列表,这可能看起来类似于拼接,但存在一个重要差别,那就是将修改被扩展的序列。在常规拼接中,情况是返回一个全新的序列,并没有改变参与拼接的列表的内容,实际上常规拼接是使用参与拼接的列表的副本叠加后创建一个新列表,而extend是将参数对应列表叠加到调用对象的末尾,因此如果使用l3= l1 + l2,拼接的效率将比l1.extend(l2)低.
  6. 方法remove通过找到列表中第一个与变量相同的元素,然后删除该元素且不返回值,这是与pop不同的地方。如:

    n=[1,2,3,1,2,3]

    b=n.remove(1) #删除后列表n变成了[2, 3, 1, 2, 3]。此地的1不是索引,是列表中的元素值,如果不用数字就更清晰
  7. 方法clear()删除列表的所有元素,列表变成空列表。

本节介绍了列表的基本概念及基本操作方法,下一节我们将继续介绍列表的一些复杂操作。

老猿Python系列文章用于逐步介绍老猿学习Python后总结的学习经验,这些经验有助于没有接触过Python的程序员可以很容易地进入Python的世界。该系列文章同步发表于:

http://blog.sina.com.cn/learnpython

http://laoyuanpython.lofter.com/

https://me.csdn.net/LaoYuanPython

欢迎大家批评指正,谢谢大家关注!

最新文章

  1. JS和JSON的区别
  2. 【poj1041】 John&#39;s trip
  3. 20145334赵文豪 《Java程序设计》第8周学习总结
  4. Linux命令学习
  5. classpath多个包添加
  6. C# 合成图片
  7. C++学习笔录4
  8. 阿里云CentOS配置iptables防火墙[转]
  9. ASP.NET MVC 中的视图生成
  10. [C++ Calculator 项目] 基础运算实现
  11. tar --打包和压缩
  12. word20170104办签证 Visa application有用的词和句子
  13. Java开发学习心得(三):项目结构
  14. Python全栈开发记录_第四篇(集合、函数等知识点)
  15. spring中Constructor、@Autowired、@PostConstruct的顺序
  16. jsp使用c:forEach报错 javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext的问题
  17. Node入门教程(9)第七章:NodeJs的文件处理
  18. centos7 安装后静态ip的配置
  19. NYOJ-----最少乘法次数
  20. 02-matplotlib-散点图

热门文章

  1. leetcode24:word-ladder-ii
  2. 为什么重写 equals() 方法,一定要重写 hashCode() 呢?| HashMap
  3. 区分部分javascript的选择器
  4. 内网渗透 day4-meterpreter基本命令
  5. 大数据分析中数据治理的重要性,从一个BI项目的失败来分析
  6. JS变量、作用域和内存问题
  7. Docker部署spring boot项目
  8. BeatifulSoup在测试工作中的应用
  9. 灵活运用的@RequestParam和@RequestBody
  10. mongo命令行操作