目录
-
切片
将原先的单个索引值改成一个范围即可实现切片:
>>> list = [1,2,4,6,7,8,9,'你好,python'] ##创建列表
>>>
>>> print(list)
[1, 2, 4, 6, 7, 8, 9, '你好,python']
##顺序查看列表
>>> for each in list:
print(each)
1
2
4
6
7
8
9
你好,python
##利用下标索引访问列表值
>>> list[1]
2
>>> list[::]
[1, 2, 4, 6, 7, 8, 9, '你好,python']
##以跨度为2访问
>>> list[::2]
[1, 4, 7, 9]
>>>
-
增
append():它的功能是在列表的末尾添加一个指定的元素;
>>> shiren = ['李白','杜甫','李商隐','白居易','王维']
>>> shiren
['李白', '杜甫', '李商隐', '白居易', '王维']
>>>
>>> shiren.append('杜牧')
>>> shiren
['李白', '杜甫', '李商隐', '白居易', '王维', '杜牧']
>>>
extend() :允许一次性添加多个元素;
注:extend() 方法的参数必须是一个可迭代对象,然后新的内容是追加到原列表最后一个元素的后面;
>>> shiren.extend(['李贺','刘禹锡','王昌龄'])
>>> shiren
['李白', '杜甫', '李商隐', '白居易', '王维', '杜牧', '李贺', '刘禹锡', '王昌龄']
*切片也可以实现列表元素的添加:
>>> num = [1,3,4,5,6,7]
>>> num
[1, 3, 4, 5, 6, 7]
>>> num[len(num):] = [2] ##相当于append()
>>> num
[1, 3, 4, 5, 6, 7, 2]
>>>
>>> num[len(num):] = [8,9,10] ##相当于extend()
>>> num
[1, 3, 4, 5, 6, 7, 2, 8, 9, 10]
>>>
insert() :允许你在列表的任意位置添加数据;
insert() 方法有两个参数,第一个参数指定的是插入的位置,第二个参数指定的是插入的元素;
>>> nums = [1,3,4,5]
>>> nums.insert(1,2)
>>> nums
[1, 2, 3, 4, 5]
>>>
-
删
remove() :可以将列表中指定的元素删除:
>>> temp = ['鼠','猫','马','龙']
>>> temp
['鼠', '猫', '马', '龙']
>>> temp.remove('猫')
>>> temp
['鼠', '马', '龙']
>>>
pop() :删除某个指定位置上的元素,它的参数就是元素的下标索引值:
这个参数其实是可选的,如果你没有指定一个参数,那么它“弹”出来的就是最后一个元素:
>>> temp.pop(0)
'鼠'
>>> temp
['马', '龙']
>>>
>>>
>>> temp.pop()
'龙'
>>> temp
['马']
>>>
clear() :一步到位清空列表;
>>> temp.clear()
>>> temp
[]
>>>
-
改
列表跟字符串最大区别就是:列表是可变的,而字符串是不可变的;
替换列表中的元素跟访问元素类似,都是使用下标索引的方法,然后使用赋值运算符就可以将新的值给替换进去了:
>>> shirens = ['李白','李商隐','白居易','王维']
>>> shirens
['李白', '李商隐', '白居易', '王维']
>>>
>>> shirens[3] = '杜甫'
>>> shirens
['李白', '李商隐', '白居易', '杜甫']
>>>
如果有连续的多个元素需要替换,可以利用切片来实现:
>>> shirens[2:] = ['苏轼','苏辙']
>>> shirens
['李白', '李商隐', '苏轼', '苏辙']
>>>
-
查
count() :查询某元素在 这个列表里面到底有多少个 ;
>>> nums = [1,2,3,2,4,2,4]
>>> nums.count(2)
3
>>>
index() :查询列表中某元素的索引值;
index() 方法有两个可选的参数 —— start 和 end,就是指定查找的开始和结束的下标位置:
语法:str.index(substring, beg=0, end=len(string))
- substring -- 指定检索的字符串。
- beg -- 开始索引,默认为 0。
- end -- 结束索引,默认为字符串的长度。
>>> nums.index(2) ##当列表中查询的元素存在多个这时候只会查询出第一个
1
>>> nums.index(2,2,5)
3
>>>
- 排序与翻转
sort() :还可以实现排序从小到大
reverse():实现翻转
>>> nums = [1,3,4,2,9,7,8]
>>> nums.sort()
>>> nums
[1, 2, 3, 4, 7, 8, 9]
>>>
>>> nums.reverse()
>>> nums
[9, 8, 7, 4, 3, 2, 1]
##从大到小排序
>>> nums = [2,1,9,4,5,7]
>>>
>>> nums.sort(reverse = 1)
>>> nums
[9, 7, 5, 4, 2, 1]
>>>
>>> nums.sort(reverse = True)
>>> nums
[9, 7, 5, 4, 2, 1]
>>>
-
创建二维数组
###创建一个4行4列的二维数组
>>> A = [0] * 4 ##先创建行
>>> for i in range(4): ##有几行就迭代几次
A[i] = [1,2]*2 ##再插入列
>>> A
[[1, 2, 1, 2], [1, 2, 1, 2], [1, 2, 1, 2], [1, 2, 1, 2]]
>>>
-
拷贝
copy():用于拷贝一个列表;
在嵌套列表中,可以用‘is’ 来检测元素是否储存在同个位置;(因为列表不同于字符串它是可变的所有存储位置不一定相同)
##下面这2种方法效果相同,在 Python 中都称为浅拷贝;
>>> nums
[1, 2, 3, 2, 4, 2, 4]
>>> num_copy1 = nums.copy()
>>> num_copy1
[1, 2, 3, 2, 4, 2, 4]
>>>
>>> nums_copy2 = nums[:]
>>> nums_copy2
[1, 2, 3, 2, 4, 2, 4]
>>>
###A和B的结果相同但本质不一样,B试图通过*对一个嵌套进行拷贝
>>> A = [0] * 3
>>> for i in range(3):
A[i] = [0] * 3
>>> A
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>>
>>> B = [[0] * 3] * 3
>>> B
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> A[0] is A[1]
False
>>> A[0] is A[2]
False
>>> A[1] is A[2]
False
>>> B[0] is B[1]
True
>>> B[0] is B[2]
True
>>> A [1][1] =1
>>> A
[[0, 0, 0], [0, 1, 0], [0, 0, 0]]
>>> B [1][1] =1
>>> B
[[0, 1, 0], [0, 1, 0], [0, 1, 0]]
>>>
##浅拷贝对于嵌套列表的拷贝,只能拷贝第一层数据,其余仅拷贝其引用:
>>> x = [[1,2,3],[4,5,6],[7,8,9]]
>>> y = x.copy()
>>> y
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> x[1][1] = 0
>>> x
[[1, 2, 3], [4, 0, 6], [7, 8, 9]]
>>> y
[[1, 2, 3], [4, 0, 6], [7, 8, 9]]
>>>
##调用模块copy实现浅拷贝和深拷贝
>>> import copy
>>> x = [[1,2,3],[4,5,6],[7,8,9]]
>>> y = copy.copy(x)
>>> x[1][1] = 0
>>> x
[[1, 2, 3], [4, 0, 6], [7, 8, 9]]
>>> y
[[1, 2, 3], [4, 0, 6], [7, 8, 9]]
>>>
>>> x = [[1,2,3],[4,5,6],[7,8,9]]
>>> y = copy.deepcopy(x)
>>> x[1][1] = 0
>>> x
[[1, 2, 3], [4, 0, 6], [7, 8, 9]]
>>> y
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>>
-
列表推导式
语法:[expression for target in iterable]
##将列表值变为原来的2倍
##推导式
>>> A = [1,2,3,4]
>>> A = [i*2 for i in A]
>>> A
[2, 4, 6, 8]
>>>
##for循环
>>> A = [1,2,3,4]
>>> for i in range(len(A)):
A[i] = A[i] *2
>>> A
[2, 4, 6, 8]
>>>
###提取矩阵中的数
>>> A = [[1,2,3],
[4,5,6],
[7,8,9]]
##提取列的元素
>>> result = [i[0] for i in A]
>>> result
[1, 4, 7]
>>>
##提取正对角线元素
>>> dia = [A[i][i] for i in range(len(A))]
>>> dia
[1, 5, 9]
>>>
##提取反对角线元素,根据反向索引值来构造表达式
>>> dia = [A[i][-i-1] for i in range(len(A))]
>>> dia
[3, 5, 7]
>>>
##推导式建立矩阵
>>> A = [[0]*3 for i in range(3)]
>>> A
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>>
##多层嵌套的列表推导式
[expression for target1 in iterable1
for target2 in iterable2
...
for targetN in iterableN]
[expression for target1 in iterable1 if condition1
for target2 in iterable2 if condition2
...
for targetN in iterableN if conditionN]
>>> _ = [x+y for x in 'abc' for y in 'abd']
>>> _
['aa', 'ab', 'ad', 'ba', 'bb', 'bd', 'ca', 'cb', 'cd'] ###笛卡尔积
>>> _ = [[x,y] for x in range(10) if x%2 == 0 for y in range(10) if y%3 == 0]
>>> _
[[0, 0], [0, 3], [0, 6], [0, 9], [2, 0], [2, 3], [2, 6], [2, 9], [4, 0], [4, 3], [4, 6], [4, 9], [6, 0], [6, 3], [6, 6], [6, 9], [8, 0], [8, 3], [8, 6], [8, 9]]
>>>