马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
本帖最后由 15271953841 于 2024-2-21 06:28 编辑
Python 3.12.1 (tags/v3.12.1:2305ca5, Dec 7 2023, 22:03:25) [MSC v.1937 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
B=[[0]*3]*3
B
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
B[1][1]=1
B
[[0, 1, 0], [0, 1, 0], [0, 1, 0]]
A=[0]*3
for i in range(3):
A=[0]*3
A
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
A[1][1]=1
A
[[0, 0, 0], [0, 1, 0], [0, 0, 0]]
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]
even=[i+1 for i in range(10) if i%2 == 0]
even
[1, 3, 5, 7, 9]
words=["Great","FishC","Brilliant","Excellent","Fantastic"]
fwords=[w for w in words if w[0]=="F"]
fwords
['FishC', 'Fantastic']
列表推导式还可以变得复杂一些,那就是嵌套:
matrix=[[1,2,3],[4,5,6],[7,8,9]]
flatten=[col for row in matrix for col in row]
flatten
[1, 2, 3, 4, 5, 6, 7, 8, 9]
或
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], [3], [6], [9], [2], [5], [8], [11], [4], [7], [10], [13], [6], [9], [12], [15], [8], [11], [14], [17]]
[[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 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,全程keep it simple & stupid。简洁胜于复杂。
|