终极列表
##列表的加法与乘法
s = [1,2,3]
t = [4,5,6]
s+t
[1, 2, 3, 4, 5, 6]
s * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
#嵌套列表
matrix = [[1,2,3],[4,5,6],[7,8,9]]
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)
        
1
2
3
4
5
6
7
8
9
for i in matrix:
    for each in i:
        print(each,end='')
    print()
    
123
456
789
matrix[0]
[1, 2, 3]
matrix[0][0]
1
matrix[1][1]
5
matrix[2][2]
9
matrix[1][2]
6
A = [0]*3
A
[0, 0, 0]
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[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]]
# is运算符
x = "fish"
y = "fish"
x is y
True
x = [1,2,3]
y = [1,2,3]
x is y
False
A[0] is A[2]
False
A[0] is A[1]
False
A[1] is A[2]
False
B[0] is B[1]
True
B[1] is B[2]
True
##浅拷贝VS深拷贝
#浅拷贝
x = [1,2,3]
y = x.copy()
x[1]=1
x
[1, 1, 3]
y
[1, 2, 3]
x = [1,2,3]
y =x[:]
x[1]=1
x
[1, 1, 3]
y
[1, 2, 3]
x = [[1,2,3],[4,5,6],[7,8,9]]
y = x.copy()
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]]
##列表推导式
一般的代码:
oho = [1,2,3,4,5]
for i in range(len(oho)):
    oho[i] = oho[i] * 2
    
oho
[2, 4, 6, 8, 10]
列表推导式基本语法:[expression for targetin iterable]
oho = [1,2,3,4,5]
oho = [i * 2 for i in oho]
oho
[2, 4, 6, 8, 10]
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]
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 "fish"]
y
['ff', 'ii', 'ss', 'hh']
显示脚本 :
code = [ord(c) for c in "fish"]
code
[102, 105, 115, 104]
matrix = [[1,2,3],[]]
          
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))]
          
diag
          
[1, 5, 9]
提取反对角元:
diag = [matrix[i][2-i] for i in range(len(matrix))]
          
diag
          
[3, 5, 7]
#列表推导式语句2
[expression for target initerable if condition]
[i for i in range(10) if i% 2 == 0]
          
[0, 2, 4, 6, 8]
even = [i + 1 for i in range(10) if i % 2 == 0]
          
even
          
[1, 3, 5, 7, 9]
提取首字母f:
words = ["great","bug","fish","fat"]
          
fwords = [w for w in words if w[0] == 'f']
          
fwords
          
['fish', 'fat']
列表推导式的嵌套语法:
[expression for target1 in iterable1
                    for target2 in iterable2
                                ........
                    for targetN IN iterableN
将二维列表降为一维列表:
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 "flish" for y in "FLISH"]
          
['fF', 'fL', 'fI', 'fS', 'fH', 'lF', 'lL', 'lI', 'lS', 'lH', 'iF', 'iL', 'iI', 'iS', 'iH', 'sF', 'sL', 'sI', 'sS', 'sH', 'hF', 'hL', 'hI', 'hS', 'hH']
_= []
          
for x in "flish":
          for y in "FLISH":
                  _.append(x+y)
          
_
          
['fF', 'fL', 'fI', 'fS', 'fH', 'lF', 'lL', 'lI', 'lS', 'lH', 'iF', 'iL', 'iI', 'iS', 'iH', 'sF', 'sL', 'sI', 'sS', 'sH', 'hF', 'hL', 'hI', 'hS', 'hH']
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]]
程序原则:Keep It Simple and Stupid
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号