列表(List)
目录
初始化列表
lst = list() # 初始化一个空列表
lst = [] # 也是初始化一个空列表
lst = [1, 2, 3] # 初始化3个元素
下标、索引操作
python中list的索引,从前往后,从0开始。负数索引表示从后往前,由-1开始,-1表示最后一个元素。
如果索引超出范围,将会引发IndexError异常。
更改列表中元素的值,采用 lst[index] = new_value ,索引可用正数也可用负数,但是不能超出范围,否则也会抛出IndexErroe异常。
list示例
>>> lst = [1, 2, 3]
>>> lst [0] # 索引0的值
1
>>> lst [1] # 索引1的值
2
>>> lst [-1] # 索引-1,即最后一个值
3
>>> lst [-2]
2
>>> lst [3] # 索引超出范围引发IndexErroe
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-64-29bf37ff8133> in <module>()
----> 1 lst [3]
IndexError: list index out of range
>>> lst[0] = 5 # 把索引为0的值更改为5
>>> lst
[5, 2, 3]
>>> lst[-1] = 10 # 更改最后一个索引的值为10
>>> lst
[5, 2, 10]
>>> lst[-4] = 12 # 超出索引范围,引发错误
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-70-8f011d505efa> in <module>()
----> 1 lst[-4] = 12
IndexError: list assignment index out of range
给 List 增加元素
append
在列最后增加一个对象,返回值为None
help(lst.append)

示例
>>> lst
[5, 2, 10]
>>> lst.append(12)
>>> lst
[5, 2, 10, 12]
insert
insert 操作的索引超出范围,若果是正索引,等效于append。如果是负索引,等效于insert(0, boject)
在索引之前插入对象
help(lst.insert)

示例
>>> lst
[5, 2, 10, 12]
>>> lst.insert(0, 7) # 在索引0之前插入7
>>> lst
[7, 5, 2, 10, 12]
>>> lst.insert(3, 0) # 在索引3之前插入0
>>> lst
[7, 5, 2, 0, 10, 12]
>>> lst.insert(7, 13) # 超出范围,索引为正,等效于append
>>> lst
[7, 5, 2, 0, 10, 12, 13]
>>> lst.insert(100, 76)
>>> lst
[7, 5, 2, 0, 10, 12, 13, 76]
>>> lst.insert(-9, 8) # 超出范围,索引为负,等效于insert(0, object)
>>> lst
[8, 7, 5, 2, 0, 10, 12, 13, 76]
extend
通过添加一个可迭代对象(迭代器)中的元素来扩展列表
help(lst.extend)

示例
>>> lst
[8, 7, 5, 2, 0, 10, 12, 13, 76]
>>> lst.extend([1, 2, 3])
>>> lst
[8, 7, 5, 2, 0, 10, 12, 13, 76, 1, 2, 3]
>>> lst1 = [1, 2, 3]
>>> lst2 = [4, 5, 6]
>>> lst1.extend(lst2) # lst2是一个可迭代对象(iterable),可给lst1做扩展
>>> lst1
[1, 2, 3, 4, 5, 6]
>>> tuple1 = ('a', 'b', 'c')
>>> tuple1
('a', 'b', 'c')
>>> lst2.extend(tuple1) # tuple1是一个可迭代对象,可给lst2做扩展
>>> lst2
[4, 5, 6, 'a', 'b', 'c']
删除元素
pop
删除并返回索引所在的元素(默认删除最后一个 -1),如果指数超出索引范围,会抛出IndexError异常
help(lst.pop)

示例
>>> lst
[1, 2, 3, 4, 5, 6]
>>> lst.pop() # 不填索引号,默认删除最后一个
6
>>> lst
[1, 2, 3, 4, 5]
>>> lst.pop(0) # 删除索引为0的元素
[2, 3, 4, 5]
>>> lst.pop(100) # 超出索引范围
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-109-795b88347eea> in <module>()
----> 1 lst.pop(100)
IndexError: pop index out of range
>>> lst.pop(-1)
[2, 3, 4]
>>> lst.pop(-100)
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-55-d93c61a62a8e> in <module>()
----> 1 lst.pop(-100)
IndexError: pop index out of range
remove
删除第一次发现的值,如果值不存在则抛出 IndexError。
pop 是弹出索引对应的值,remove是删除最左边的一个值, pop 针对的是索引 remove针对的是值
help(lst.remove)

示例
>>> lst
[1, 2, 3, 1, 2, 3]
>>> lst.remove(1) # 删除第一次查找到的1,并没有删除第二个1
[2, 3, 1, 2, 3]
>>> lst.remove(5)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-12-29e61bbce0d4> in <module>()
----> 1 lst.remove(5)
ValueError: list.remove(x): x not in list
clear
清空列表,删除所有元素
help(lst.clear)

示例
>>> lst = [1, 2, 3]
>>> lst
[1, 2, 3]
>>> lst.clear()
>>> lst
[]
查找/统计元素
index
查找某值的第一个索引,可以指定索引开始和结束位置。(start 包含,stop不包含)
如果值没有找到,会抛出IndexError异常
help(lst.index)

示例
>>> lst = ['a', 'b', 'c', 'd', 'b']
>>> lst
['a', 'b', 'c', 'd', 'b']
>>> lst.index('b') # 查找'b'第一次出现的索引位置
>>> 1
>>> lst.index('b', 2) # 从索引2开始查找,找到第一次出现'b'的位置
>>> 4
>>> lst.index('x')
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-31-616584d1b884> in <module>()
----> 1 lst.index('x') # 没有值为'x'的索引
ValueError: 'x' is not in list
>>> lst.index('b', 2, 4) # 索引2-4之间,没有索引值为'b'
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-32-fa3eb33afd79> in <module>()
----> 1 lst.index('b', 2, 4)
ValueError: 'b' is not in list
>>> lst.index('b', 2, 5)
>>> 4
count
计数,返回值出现的次数
help(lst.count)

示例
>>> lst
['a', 'b', 'c', 'd', 'b']
>>> lst.count('b')
2
len
len函数可以用在列表,元组,字符串,字典,集合等上面,输出容器中元素的个数
help(len)

示例
>>> lst
['a', 'b', 'c', 'd', 'b']
>>> len(lst)
5
修改列表
sort
原地排序。有两个参数:一个是键,表示排序用的函数,默认为无。一个是反向(反向,降序排序),默认是假
help(lst.sort)

示例
>>> lst
['a', 'b', 'c', 'd', 'b']
>>> lst.sort()
>>> lst
['a', 'b', 'b', 'c', 'd']
>>> lst.sort(reverse=True)
>>> lst
['d', 'c', 'b', 'b', 'a']
reverse
原地反转
help(lst.reverse)

示例
>>> lst
['d', 'c', 'b', 'b', 'a']
>>> lst.reverse()
>>> lst
['a', 'b', 'b', 'c', 'd']
其他
copy
采用赋值方法创建新列表,是指向原来列表的那块内存,当进行更改的时候,新老列表一起改变
正常情况赋值
>>> lst
['a', 'b', 'b', 'c', 'd']
>>> lst = [1, 2, 3, 4, 5, 6]
>>> lst1 = lst
>>> lst1.remove(2)
>>> lst1
[1, 3, 4, 5, 6]
>>> lst
[1, 3, 4, 5, 6]
采用copy方法,就是复制出一块相同的内存(影子复制),新旧列表互不影响

示例
>>> lst
[1, 3, 4, 5, 6]
>>> lst1 = lst.copy()
>>> lst1.remove(3)
>>> lst1
[1, 4, 5, 6]
>>> lst
[1, 3, 4, 5, 6]
>>> id(lst)
139736837587272
>>> id(lst1)
139736837988424

浙公网安备 33010602011771号