(列表)小甲鱼的Python教程笔记-3

Python

Posted by RavenZhao on January 18, 2021
# 创建列表
# 一个列表内部可以容纳不同数据
>>> test = [1,2,3,5,'sssa',]
for each in test:
    print(each)
# 列表的索引从0开始
>>> test[0]
# 列表最后一个元素索引值为-1
>>> test[-1] == test[len(test)-1]
# 列表切片
# 打印列表前3个元素
>>> test[0:3]
>>> test[:3]
# 设置步进值,步进值为2
>>> test[0:6:2]
>>> test[::2]
# 将列表倒序输出
>>> test[::-1]
# 向列表末尾添加元素,每次只能添加一个元素
>>> test.append('黑寡妇')
# 向列表末尾添加一个可迭代对象
>>> test.extend(['a',1,2,3,'ssss'])
# 利用切片向末尾添加可迭代对象
>>> test[len(test):] = [1,2,3]
>>> test[len(test):] = [6]
# 在列表中间添加元素,a为插入位置索引(从0开始),b为插入的元素
>>> test.insert(a,b)
# 删除指定的元素,a为第一个匹配的元素
>>> test.remove(a)
# 删除某一个位置上元素,index为要删除元素的索引
>>> test.pop(index)
# 清空列表
>>> test.clear()
# 列表元素从小到大排序,并更新本列表
>>> test.sort()
# 列表反转排序
>>> test.reverse()
# 直接将一个列表按照从大到小排序
>>> test.sort(reverse = True)
# 返回元素a的索引值.有多个相同元素的条件,返回第一个索引值
>>> test.index(a)
# 列表的加法就是两个列表前后拼接
# 列表与数字a的乘法就是将列表的元素重复a遍
# 列表嵌套
>>> matrix = [[1,2,3],[4,5,6],[7,8,9]]      #二维列表
# 更直观的写法
>>> matrix = [[1,2,3],
          [4,5,6],
          [7,8,9]]
# 利用嵌套循环防伪嵌套列表
for i in matrix:
    for each in i:
        print(each)

# 利用索引访问嵌套列表
matrix[i][j]
# 当利用数字对一个列表进行乘法运算时,并不是对元素进行简单拷贝,而是对元素的索引进行复制。
# 这样的结果是,当对列表某一个元素进行修改时,对应索引的所有元素都会发生变化。
>>> lists = [[]] * 3
>>> lists
[[],[],[]]
>>> lists[0].append(3)
>>> lists
[[3],[3],[3]]
# 所以当想要对元素进行复制的时候,可以利用循环语句
>>> lists = [[] for i in range(3)]
>>> lists[0].append(3)
[[3],[],[]]
>>> x = [1,2,3]
>>> y = x
# 上面的语句只是将对列表x的引用传递给y,并不会在内存中开辟一个新的存储空间存储y
# 所以当x改变时,y也会跟着变化
>>> x.append(4)
>>> y
[1,2,3,4]
# 如果想要得到两个相互独立的列表,需要利用切片语句(浅拷贝:只拷贝外层对象)
>>> y = x[:]
# 拷贝嵌套列表,利用深拷贝(copy模块),因为浅拷贝中仍然只是复制内层对象的索引。
import copy
# 浅拷贝
y = copy.copy(matrix)
# 深拷贝
z = copy.deepcopy(matrix)
# 列表推导式,结构:[表达式 for 目标 in 迭代体]
>>> a = [1,2,3]
# 新建一个列表b,将a中所有的元素都*2
>>> b = [i * 2 for i in a]
>>> y = [c * 2 for c in 'test']
>>> y
['tt','ee','ss','tt']
# 创建二维列表
>>> matrix2d = [[0] * 3 for i in range(3)]
# 将二维列表展开
>>> matrix2d = [[1,2,3],[4,5,6],[7,8,9]]
>>> flatten = [col for row in matrix2d for col in row]
# 在列表推导式中添加条件语句
# 先执行for循环,再执行条件语句,最后执行左侧的表达式。
>>> even = [i for i in range(10) if i % 2 == 0]
[0,2,4,6,8]
>>> words = ['test','five','sceond','ff1']
>>> fwords = [i for i in words if i[0] == 'f']
# 99乘法
>>> matrix99 =[['%d * %d = %d'%(i,j,i*j)] for i in range(1,10) for j in range(1,i+1)]