|
|
|
|
移动端

2.2.5 列表(1)

《自学Python:编程基础、科学计算及数据分析》第2章Python 基础,在本章中,我们将学习Python 语言的基本使用,掌握Python 的基本使用方法,为后续的学习打下基础。本节为大家介绍列表。

作者:李金来源:机械工业出版社|2018-05-03 16:37

技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战

2.2.5 列表(1)

列表(List)是一个有序的Python对象序列。

1.列表的生成

列表可以用一对中括号“[]”生成,中间的元素用逗号“, ”隔开:

  1. In [1]: l = [1, 2.0, 'hello']   
  2. In [2]: l   
  3. Out[2]: [1, 2.0, 'hello'] 

空列表可以用“[]”或者 list()函数生成:

  1. In [3]: empty_list = []   
  2. In [4]: empty_list   
  3. Out[4]: []   
  4. In [5]: list()   
  5. Out[5]: []  

2.列表的基本操作

与字符串类似,列表也支持使用len()函数得到长度:

  1. In [6]: len(l)   
  2. Out[6]: 3 

列表相加,相当于将这两个列表按顺序连接:

  1. In [7]: [1, 2, 3] + [3.2, 'hello']   
  2. Out[7]: [1, 2, 3, 3.2, 'hello'] 

列表数乘,相当于将这个列表重复多次:

  1. In [8]: l * 2   
  2. Out[8]: [1, 2.0, 'hello', 1, 2.0, 'hello']  

3.索引和分片

列表是个有序的序列,因此也支持索引和分片的操作。

列表的正负索引:

  1. In [9]: a = [10, 11, 12, 13, 14]   
  2. In [10]: a[0]   
  3. Out[10]: 10   
  4. In [11]: a[-1]   
  5. Out[11]: 14 

分片:

  1. In [12]: a[2:-1]   
  2. Out[12]: [12, 13] 

与字符串不同,我们可以通过索引和分片来修改列表。 Python的字符串是一种不可变的类型,一旦创建就不能修改。例如,在尝试使用索引将字符串的首字母大写时,Python会抛出一个异常:

  1. In [13]: s = "hello world"   
  2. In [14]: s[0] = 'H'   
  3.  
  4. TypeError   Traceback (most recent call last)   
  5. <ipython-input-14-844622ced67a> in <module>()   
  6. ----> 1 s[0] = 'H'   
  7.  
  8. TypeError: 'str' object does not support item assignment 

列表是一种可变的数据类型,支持通过索引和分片修改自身。例如,将列表的第一个元素改为100:

  1. In [15]: a = [11, 12, 13, 14, 15]   
  2. In [16]: a[0] = 100   
  3. In [17]: a   
  4.  
  5. Out[17]: [100, 12, 13, 14, 15] 

这种赋值也适用于分片。例如,将列表 a中的[12, 13]换成[1, 2]:

  1. In [18]: a = [11, 12, 13, 14, 15]   
  2. In [19]: a[1:3] = [1, 2]   
  3. In [20]: a   
  4. Out[20]: [11, 1, 2, 14, 15]  

对于间隔为 1的连续分片,Python采用的是整段替换的方法,直接用一个新列表替换原来的分片,两者的元素个数并不需要相同。

例如,可以将列表 a中的[1, 2]换成[4, 4, 4, 4]:

  1. In [21]: a[1:3] = [4, 4, 4, 4]   
  2. In [22]: a   
  3. Out[22]: [11, 4, 4, 4, 4, 14, 15] 

这种机制还可以用来删除列表中的连续分片:

  1. In [23]: a = [11, 12, 13, 14, 15]   
  2. In [24]: a[1:3] = []   
  3. In [25]: a   
  4. Out[25]: [11, 14, 15] 

对于间隔不为 1的不连续分片,赋值时,两者的元素数目必须一致:

  1. In [26]: a = [11, 12, 13, 14, 15]   
  2. In [27]: a[::2] = [1, 3, 5]   
  3. In [28]: a   
  4. Out[28]: [1, 12, 3, 14, 5] 

数目不一致时,会抛出异常:

  1. In [29]: a[::2] = []  
  2. ValueError      Traceback (most recent call last)   
  3. <ipython-input-29-7b6c4e43a9fa> in <module>()   
  4. ----> 1 a[::2] = []   
  5.  
  6. ValueError: attempt to assign sequence of size 0 to extended slice of   
  7. size 3  

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

JavaScript核心技术

它从最简单的地方入手,不仅讲述了JavaScript的基础知识,还讲述了JavsScript如何操作CSS、DOM等Ajax基础技术。而关于跨浏览器兼容问题的解...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊