Python 知识量:10 - 41 - 150
列表与元组一样,也是序列,但不同的是:列表是可变的。可变意味着,在创建了一个列表后,可以直接修改该列表的元素,添加、删除、覆盖原有元素都是可以的。正因列表如此灵活,所以,在编程中其比元组使用率高得多。
在结构上,列表用方括号括起来表示,其中的每个元素用逗号分割。与元组一样,列表的元素可以是任何Python值,包含另一个列表也是可以的。空列表用[]表示,单元素列表(即:只含有一个元素的列表)写做:[x],这里与元组不同,单元素后面不用加逗号。下面是一些列表的示例:
>>> number=[1,2,3,4,5] >>> number2=[6,7,8,9,10] >>> len(number) 5 >>> number+number2 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> number*2 [1, 2, 3, 4, 5, 1, 2, 3, 4, 5] >>> number[2] 3 >>> number[-3:] [3, 4, 5] >>> type([]) # 检查一个空列表类型 <class 'list'> >>> type([7]) # 检查一个单元素列表类型 <class 'list'>
可以利用列表可变性,轻松的修改其元素,例如:
>>> number=[1,2,3,4,5] >>> number [1, 2, 3, 4, 5] >>> number[0]=0 >>> number [0, 2, 3, 4, 5]
赋值后的Python变量总是指向一个值,而不是包含一个值,列表元素也是一样的。因此,如上所示,当改变number[0]的值时,实际上是将number[0]由指向1修改为指向0,原来的值1因为没有变量指向它了,将会被系统回收清理掉。
理解了以上细节,就可以明白,其实列表元素也可以指向列表本身,从而创建一个自引用的数据结构,如下所示:
>>> box=[1,2,3,4,5] >>> box[2]=box >>> box [1, 2, [...], 4, 5]
Python可以识别自引用,不会无限打印列表,而是使用[...]来表示自引用。
Python提供的常用列表函数如下表所示:
函数名 | 功能说明 |
---|---|
s.append(x) | 在列表s的末尾添加元素x。 |
s.count(x) | 返回元素x在列表s中出现的次数。 |
s.extend(part) | 将part作为序列添加到列表s的末尾。 |
s.index(x) | 返回元素x在列表s中第一次出现的位置的索引。 |
s.insert(i,x) | 将元素x插入到索引i指向的列表s的元素前面。 |
s.pop(i) | 删除并返回列表s中索引i指向的元素。 |
s.remove(x) | 删除列表s中的第一个x元素。 |
s.reverse() | 反转列表s中元素的排列顺序。 |
s.sort() | 将列表s的元素按升序排列。 |
1、在列表末尾添加元素。
许多编程语言中都有“栈”的概念,在列表末尾添加元素也可以称为在栈顶压入元素,一般用push表示,在Python中使用函数append()来实现push。
# list.py def list(ls): message=[] for number in ls: if number < 0: s=str(number)+' is a negative number' elif number >= 0: s=str(number)+' is a natural number' message.append(s) return message
运行结果为:
>>> ====================== RESTART: D:\PythonTestFile\list.py ====================== >>> list([1,69,-9,0,-56]) ['1 is a natural number', '69 is a natural number', '-9 is a negative number', '0 is a natural number', '-56 is a negative number']
在函数list中,先创建了一个空列表,然后根据判断条件陆续在列表末尾插入元素。如果想要逐行打印结果列表的每个元素,可以这样做:
>>> print('\n'.join(list([1,69,-9,0,-56]))) 1 is a natural number 69 is a natural number -9 is a negative number 0 is a natural number -56 is a negative number
2、在列表末尾添加序列。
函数extend()与函数append()功能类似,但它用于在列表末尾添加一个序列。下面的示例显示了函数extend()与append()的差异:
>>> ls=[] >>> ls.extend('abc') >>> ls ['a', 'b', 'c'] >>> ls2=[] >>> ls2.append('abc') >>> ls2 ['abc']
3、删除并返回指定索引对应的列表元素。
对于“栈”的概念,与压入(push)对应的术语称为弹出(pop),Python中同样使用函数pop()来实现这个功能。
>>> ls=[1,2,3,4,5] >>> ls.pop(2) 3 >>> ls [1, 2, 4, 5] >>> ls.pop() 5 >>> ls [1, 2, 4] >>> ls.pop() 4 >>> ls [1, 2]
除了指定弹出的元素索引外,如果不给出参数,函数pop()默认弹出列表最后一个元素。
4、仅删除指定索引对应的列表元素。
函数remove(x)与pop(x)功能相似,但函数remove(x)不返回删除的元素,而且必须指定要删除元素的索引值,否则会引发TypeError异常。
>>> ls=[1,2,3,4,5] >>> ls.remove(2) >>> ls [1, 3, 4, 5] >>> ls.remove() Traceback (most recent call last): File "<pyshell#24>", line 1, in <module> ls.remove() TypeError: remove() takes exactly one argument (0 given)
5、反转列表元素的排列顺序。
函数reverse()用于反转列表元素的排列顺序,它不会创建列表的拷贝,而是直接删除列表元素,并指向排序后的新值。
>>> ls=[1,2,3,4,5] >>> ls [1, 2, 3, 4, 5] >>> ls.reverse() >>> ls [5, 4, 3, 2, 1]
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6