此文为本人在学习python过程中,整理出来的学习笔记。主要参考书目有:
1、《python编程:从入门到实践》;
2、《python学习手册》;
3、《像计算机科学家一样思考Python》
列表可以包含任何种类的对象:数字,字符串,列表及字典等。与字符串不同的是列表为‘可变序列’,支持在原处修改的操作。
python列表具有以下特性:
#可直接通过中括号的方式来创建一个列表
list1 = [1,2,3,4,5]
#也可利用list函数来将字符串转化为列表
strr = '1234'
list2 = list(strr)
print(list2)
#运行结果为:['1', '2', '3', '4']
#列表内元素个数
print(len(list1))
#运行结果为:5
列表的算数运算符操作:
list1 = [1,2,3,4,5]
list2 = [1,2,3]
list3= list1 + list2
print(list3)
#运行结果:[1, 2, 3, 4, 5, 1, 2, 3]
lst = ['hello']
print(lst * 4) # 列表中的元素累加,而不是列表个数的累加!
#运行结果:['hello', 'hello', 'hello', 'hello']
列表支持 + 及 * 运算但不支持 - 及 / 运算
list1 = ['1', '2', '3', '4']
print('2' in list1) # in 返回布尔值 True or False
#运行结果为:True
for number in list1:
print(number,end = ' ')
#运行结果为:1 2 3 4
在后面将会以专门章节展开介绍,以下只做简单介绍:
repeat = [word * 4 for word in '你好啊']
print(repeat)
#运行结果为:['你你你你', '好好好好', '啊啊啊啊']
上述操作其实相等于创建了一个完整的for循环语句,代码为:
repeat = [] #先创建一个空列表
for word in '你好啊':
repeat.append(word * 4) #append函数为在列表内增加元素
print(repeat)
#运行结果为:['你你你你', '好好好好', '啊啊啊啊']
列表与字符串都为有序序列,故在索引和分片(也叫切片)操作上与字符串索引,分片操作基本相同。
foods = ['鸡胸肉','鸭腿肉','猪肉','牛肉']
print(foods[0]) #与字符串一样第一个元素位数为0
#运行结果为:鸡胸肉
#其他切片操作可参考本系列博客的字符串学习内容
#注意列表中嵌套内容的索引
words = ['a','b',[1,2,3],'c']
print(words[2][0])
#运行结果:1
与字符串不同的是列表属于可变序列,可直接对其进行索引后赋值(不用像字符串需要借助利用变量才能进行更改操作)。如:
foods = ['鸡胸肉','鸭腿肉','猪肉','牛肉']
foods[1] = '鱼肉'
print(foods)
#运行结果为:['鸡胸肉', '鱼肉', '猪肉', '牛肉']
对列表的多个元素值进行改变:
numbers = [1,2,3,4,5,6]
numbers[0:2] = [7,8]
print(numbers)
#运行结果:[7, 8, 3, 4, 5, 6]
注意列表切片赋值:切片个数不一定要等于赋值个数,如下面代码所示:
matrix = [0,1,2,3,4,5]
matrix[0:2] = [6]
print(matrix)
#运行结果:[6, 2, 3, 4, 5]
列表切片赋值,可以理解为先对列表进行删除,然后在被删除位置上开始插入。
所以也可用切片的方法来删除列表中的元素:
matrix = [0,1,2,3,4,5]
matrix[0:2] = []
print(matrix)
#运行结果:[2, 3, 4, 5]
可以根据列表能进行嵌套的原理来形成简单的矩阵:
matrix = [[1,2,3],
[4,5,6],
[7,8,9]]
print(matrix[1][1])
#运行结果:5
append方法,用于在列表末尾增加元素:
matrix = [0,1,2,3,4,5]
matrix.append(6)
print(matrix)
#运行结果:[0, 1, 2, 3, 4, 5, 6]
append方法也常被用来新建列表:
matrix = []
for number in range(0,6):
matrix.append(number)
print(matrix)
#运行结果:[0, 1, 2, 3, 4, 5]
sort函数用来对列表进行简单的排序:
matrix = [5, 2, 6, 1, 3, 4]
matrix.sort()
print(matrix)
#运行结果:[1, 2, 3, 4, 5, 6]
注意list.sort()方法无返回值!!(严格的说返回值为 None)
以下是其错误用法,请注意:
matrix = [5, 2, 6, 1, 3, 4]
print(matrix.sort())
#运行结果为:None
也可对字符串等列表进行排序:
words = ['b', 'd', 'a', 'c', 'f', 'e']
words.sort()
print(words)
#运行结果:['a', 'b', 'c', 'd', 'e', 'f']
反向排序,利用内置参数 reverse = True 来实现:
words = ['b', 'd', 'a', 'c', 'f', 'e']
words.sort(reverse = True)
print(words)
#运行结果:['f', 'e', 'd', 'c', 'b', 'a']
extend方法也是用来在列表末尾增加元素,但是要注意其与append用法的不同,append()方法括号内添加的可以是:数字,字符,变量,列表等,凡是extend()方法,添加的只能是列表,而且增加列表的方式也有所不同,如:
matrix = [0,1,2,3]
matrix.extend([4,5])
print(matrix)
#运行结果:[0, 1, 2, 3, 4, 5]
matrix = [0,1,2,3]
matrix.append([4,5])
print(matrix)
#运行结果:[0, 1, 2, 3, [4, 5]]
pop,remove,del方法都可以用来删除列表中的元素,但是三者各有各的功效:
matrix = [0,1,2,3,4,5,6]
matrix.pop() #方法内部不传入参数,则默认删除最后一位
print(matrix)
#运行结果:[0, 1, 2, 3, 4, 5]
用来删除指定位元素:
matrix = [1,2,3,4,5,6]
matrix.pop(1) #删除的是1位的元素!
print(matrix)
#运行结果:[1, 3, 4, 5, 6]
remove 方法则是用来删除指定元素,如:
matrix = [1,2,3,4,5,6]
matrix.remove(1) #是删除1,而不是1位的元素,remove方法内必须传入参数
print(matrix)
#运行结果:[2, 3, 4, 5, 6] #注意以上面代码结果的不同之处
remove方法无返回值
matrix = [1,2,3,4,5,6]
number = matrix.remove(1)
print(number)
#运行结果:None
pop方法有返回值
matrix = [1,2,3,4,5,6]
number = matrix.pop(1)
print(number)
#运行结果:2
从上述实验中可发现,pop与remove方法的不同之处有:
pop方法删除列表特定位的元素(不输入,则默认删除最后一位)
remove方法删除列表中特定元素
pop方法有返回值(之后可再次调用),remove无返回值
matrix = [1,2,3,4,5,6]
del matrix[0]
print(matrix)
#运行结果:[2, 3, 4, 5, 6]
也可用来删除列表内多个元素:
matrix = [1,2,3,4,5,6]
del matrix[0:3]
print(matrix)
#运行结果:[4, 5, 6]
在列表中插入元素:
matrix = [1,2,3,4,5,6]
matrix.insert(0,7) #0为插入点,7为插入值
print(matrix)
#运行结果:[7, 1, 2, 3, 4, 5, 6]
index方法为获取列表中元素的位置:
matrix = [1,2,3,4,5,6]
print(matrix.index(4))
#运行结果:3
max函数可用来对列表取最大值操作,如:
matrix = [1,2,3,4,5,6]
print(max(matrix))
#运行结果为:6
matrix = [1,2,3,4,5,6]
matrix_2 = matrix[:]
print(matrix_2)
#运行结果:[1, 2, 3, 4, 5, 6]
不要用下面这种方式来尝试复制列表:
matrix = [1,2,3,4,5,6]
matrix_3 = matrix #此种方式相当于将matrix和matrix_3两个变量指向了同一个列表,而不是复制该列表。
matrix.pop() #即如对该列表进行操作时,matrix_3也会改变
print(matrix_3)
#运行结果:[1, 2, 3, 4, 5]