列表和元祖是Python 6种内置序列类型中最常见的两种,其中列表是可变序列类型,元祖是不可变序列类型。
1. 创建列表
将不同数据项,使用逗号分隔,用中括号括起来,就可以创建列表。
>>> fruits = ['apple','banana','mango','orange','pear'] >>> fruits ['apple', 'banana', 'mango', 'orange', 'pear']
使用Python内置函数 len(list) 返回列表长度
>>> len(fruits)
5
我们可以创建没有任何元素的空列表
>>> cars = [] >>> cars []
还可以使用内置函数 list(seq) 将其他序列转化为列表
>>> str = 'Hello' >>> list(str) ['H', 'e', 'l', 'l', 'o'] >>> tup = (10, 20, 30) >>> list(tup) [10, 20, 30]
列表中元素的数据类型可以不同
>>> multi = ['apple', 10, ('cat', 'dog')] >>> multi ['apple', 10, ('cat', 'dog')]
2. 访问列表元素
通过索引访问列表中的元素,索引从0开始。当访问列表中的元素时,确保索引不要越界,否则会报错。
>>> fruits = ['apple','banana','mango','orange','pear'] >>> fruits[0] 'apple' >>> fruits[1] 'banana'
索引超出范围时,将返回IndexError错误,确保索引不要越界,最后一个元素的索引是 len(list)-1
>>> fruits[5] Traceback (most recent call last): File "<input>", line 1, in <module> IndexError: list index out of range
最后一个元素的索引还可以用 -1 表示,倒数第2个用 -2 表示,依次类推。
>>> fruits[-1] 'pear' >>> fruits[-2] 'orange'
想知道列表元素的索引,使用列表方法 list.index(obj) ,该方法返回从左到右匹配到的第一个元素的索引。
>>> fruits.index('orange') 3
列表中可能存在重复的元素,使用方法 list.count(obj) 返回某个元素在列表中出现的次数。
>>> nums = [1, 2, 3, 3, 5, 5, 5] >>> nums.count(3) 2 >>> nums.count(5) 3
3. 对列表进行增、删、改等操作
追加列表元素,方法 list.append(obj) 在列表的末尾追加元素。
>>> fruits = ['apple'] >>> fruits ['apple'] >>> fruits.append('banana') >>> fruits ['apple', 'banana'] >>> fruits.append('mango') >>> fruits.append('orange') >>> fruits.append('pea') >>> fruits ['apple', 'banana', 'mango', 'orange', 'pea']
将其他序列中的元素追加到列表中,方法 list.extend(seq) 将其他序列中的元素追加到列表末尾
>>> fruits = ['apple','banana'] >>> students = ('xioaming', 'xiaohua') >>> fruits.extend(students) >>> fruits ['apple', 'banana', 'xioaming', 'xiaohua']
>>> word = 'HELLO' >>> fruits.extend(word) >>> fruits ['apple', 'banana', 'xioaming', 'xiaohua', 'H', 'E', 'L', 'L', 'O']
插入列表元素,方法 list.insert(index, value) 将元素插入指定索引的位置
>>> digit = ['10', '11', '12', '13'] >>> digit.insert(1, '88') >>> digit ['10', '88', '11', '12', '13']
通过索引删除列表元素,方法 list.pop() 默认删除列表中最后一个元素,也可以通过索引指定删除列表中的具体元素 list.pop(index)
>>> fruits.pop() 'pea' >>> fruits ['apple', 'banana', 'mango', 'orange'] >>> fruits.pop(1) 'banana' >>> fruits ['apple', 'mango', 'orange']
通过元素删除列表元素,方法 list.remove(obj) 删除从左到右匹配到的第一个元素
>>> fruits = ['apple','banana','mango','orange','pear'] >>> fruits.remove('banana') >>> fruits ['apple', 'mango', 'orange', 'pear'] >>> nums = [1, 2, 3, 3, 5, 5, 5] >>> nums.remove(3) >>> nums [1, 2, 3, 5, 5, 5]
替换列表元素,对对应索引位置的元素重新赋值,就可以替换该元素
>>> fruits = ['apple','banana','mango','orange','pear'] >>> fruits[1] = 'dog' >>> fruits ['apple', 'dog', 'mango', 'orange', 'pear']
对列表中的元素重新排序,方法 list.sort() 从小到大排序列表中的元素, list.sort(reverse=True) 从大到小排序,该方法是直接改变原列表元素的顺序。
>>> nums = [0, 5, 3, 2, 4, 1] >>> nums.sort() >>> nums [0, 1, 2, 3, 4, 5] >>> nums = [0, 5, 3, 2, 4, 1] >>> nums.sort(reverse=True) >>> nums [5, 4, 3, 2, 1, 0]
反转列表中元素顺序,方法 list.reverse() 对原列表元素反向排序
>>> fruits = ['apple','banana','mango','orange','pear'] >>> fruits.reverse() >>> fruits ['pear', 'orange', 'mango', 'banana', 'apple']
合并列表,使用“+”可以将多个列表合并为一个新的列表
>>> fruits = ['apple','banana'] >>> nums = [1, 2, 3] >>> students = ['xiaoming', 'xiaohua'] >>> fruits + nums + students ['apple', 'banana', 1, 2, 3, 'xiaoming', 'xiaohua']
截取列表,使用语句 list[N1:N2] 截取列表索引为N1到N2-1的元素形成新列表
>>> nums = [10, 11, 12, 13, 14, 15] >>> nums[2:5] [12, 13, 14]
在Python中,使用赋值语句将列表a赋值给列表b,其实只是简单的对象引用,a和b指向的是同一片内存区域,相当于b是a的别名而已
>>> a = [10, 11, 12, 13] >>> b = a >>> a is b True >>> a[1] = 88 >>> a [10, 88, 12, 13] >>> b [10, 88, 12, 13]
复制列表,要真正的将a列表的元素复制给b列表,而不是引用,需要使用方法 list.copy(list)
>>> a = [10, 11, 12, 13] >>> b = a.copy() >>> a is b False >>> a[1] = 88 >>> a [10, 88, 12, 13] >>> b [10, 11, 12, 13]
清空列表,方法 list.clear() 清空列表元素
>>> fruits = ['apple','banana','mango','orange','pear'] >>> fruits.clear() >>> fruits []