我的PYTHON学习笔记-列表篇

版本:python3.7。

笔记来源于B站小甲鱼教程

 浅拷贝和深拷贝

浅拷贝

通过赋值拷贝出的列表y与x列表的存储位置一致,会随着x的修改而跟着改变

>>> x=[1,2,3]
>>> y=x
>>> y
[1, 2, 3]
>>> x[1]=4#修改元素
>>> x
[1, 4, 3]
>>> y
[1, 4, 3]#y一起被修改
>>> #深拷贝和浅拷贝
>>> #不同的物理还是得通过拷贝来进行

>>> y=x[:]#赋值一下
>>> y
[1, 1, 3]
>>> x[1]=2
>>> y
[1, 1, 3]#y一起被修改

>>> #浅拷贝拷贝的只是其引用
>>> import copy
>>> x=[[1,2,3],[4,5,6],[7,8,9]]
>>> y=copy.copy(x)#模块.函数()
>>> x[1][1]=0#修改x
>>> x
[[1, 2, 3], [4, 0, 6], [7, 8, 9]]
>>> y
[[1, 2, 3], [4, 0, 6], [7, 8, 9]]#y改变

深拷贝-copy模块

深拷贝引入copy模块,deepcopy()函数
>>> import copy
#deepcopy函数
>>> 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]]#y没有跟着改变

列表推导式

>>> o=[1,2,3,4,5]
>>> for i in range(len(o)):
	o[i]=o[i]*2#数值乘2	
>>> o
[2, 4, 6, 8, 10]


>>> o=[1,2,3,4,5]
>>> o=[i*2 for i in o]
>>> o
[2, 4, 6, 8, 10]
>>> #以上是列表推导式

>>> #基本语法:[expression for target in interable]
>>> x=[i for i in range(10)]
>>> x
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> x=[i+1 for i in range(10)]
>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


>>> x=[]
>>> for i in range(10):
	x.append(i+1)	
>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> y=[c*2 for c in "fishc"]#字符串乘2
>>> y
['ff', 'ii', 'ss', 'hh', 'cc']
>>> code=[ord(c) for c in "fishc"]#字符串转码
>>> code
[102, 105, 115, 104, 99]
>>> #ord():将字符转为unicode编码



>>> matrix=[[1,2,3],[4,5,6],[7,8,9]]
>>> col2=[row[1] for row in matrix]#获取第二列元素
>>> col2
[2, 5, 8]
>>> diag=[matrix[i][i] for i in range(len(matrix))]#获取




>>> S=[[0]*3 for i in range(3)]
>>> S
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> #测试是不是非引用同一个元素构成列表,使用修改某一下标元素的方法
>>> S[1][1]=1
>>> S
[[0, 0, 0], [0, 1, 0], [0, 0, 0]]
>>> #没有全部改变,创建成功


>>> even=[i for i in range(10) if i%2==0]
>>> even
[0, 2, 4, 6, 8]
>>> #测试是先运行左边还是右边,对第一个i进行修改
>>> even=[i+1 for i in range(10) if i%2==0]
>>> even
[1, 3, 5, 7, 9]
>>> #先执行for再执行if


>>> words=["great","fishc","adourable"]
>>> fwords=[w for w in words if w[0]=="f"]
>>> fwords
['fishc']
>>> #筛选出f开头的单词,使用下标索引==f的方法


>>> matrix=[[1,2,3],[4,5,6],[7,8,9]]
>>> #把matrix展开:
>>> flatten=[col for row in matrix for col in row]
>>> flatten
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> #row 行
>>> flatten=[]
>>> for row in matrix:
	for col in row:
		flatten.append(col)

	
>>> flatten
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> #用字符来体现:
>>> [x+y for x in "fishc" for y in "FISHC"]
['fF', 'fI', 'fS', 'fH', 'fC', 'iF', 'iI', 'iS', 'iH', 'iC', 'sF', 'sI', 'sS', 'sH', 'sC', 'hF', 'hI', 'hS', 'hH', 'hC', 'cF', 'cI', 'cS', 'cH', 'cC']
>>> #以上为笛卡尔乘积


>>> _=[]
>>> #无关紧要的变量名可以用下划线来表示
>>> for x in"fishc":
	for y in "FISHC":
		_.append(x+y)

		
>>> _
['fF', 'fI', 'fS', 'fH', 'fC', 'iF', 'iI', 'iS', 'iH', 'iC', 'sF', 'sI', 'sS', 'sH', 'sC', 'hF', 'hI', 'hS', 'hH', 'hC', 'cF', 'cI', 'cS', 'cH', 'cC']

#用数字来体现:
>>> [[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]]
#for 和 if 语句要分行写加冒号

#循环表示:
>>> for x in range(10):
	if x%2 == 0:
		for y in range(10):
			if y%3 == 0:
				_.append([x,y])

				
>>> _
[[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]]
>>> 

#程序设计原则:KISS原则:简洁胜于复杂
#谋定而后动,知止而有得

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值