python列表学习笔记

2021-12-08  本文已影响0人  屎倒淋头还嚼便
#列表的增删改查
一、增加
s = [1,2,3,4,5]
s.append(11)
s.extend( [8 , 9] )
s.insert(1,123) #在索引1处插入123

#列表、和普通字符串都是序列。
s = [1,2,3,4,5]
s[len(s):] = [6]  #切片,大概就是从一个列表中截取一部分数据
结果:[1, 2, 3, 4, 5, 6]
注意:冒号表示范围,返回的还是一个列表,所以用列表赋值
冒号后面是空白,表示到列表的最后

s = [1,2,3,4,5]
s[len(s)-1] = 7
结果:[1, 2, 3, 4, 7]

二、删除
s.remove(123) #删除具体值
s.pop(0) #按索引删除
s.clear() #清空

三、改
s = [1,2,3,4,5]
s
[1, 2, 3, 4, 5]
s[1:3] = [22,33,44,55] #切片,索引1、2两处改成若干个值,也可以只改成一个值
s
[1, 22, 33, 44, 55, 4, 5]

四、排序
s.sort() # 默认正序
s.reverse() #倒转列表
s.sort(reverse=True) #先排序后倒转

s.count(22) #计算22有多少个
s.index(22) #返回22所处的索引位置

s2 = s.copy()
s3 = s[:] #这两种都是浅拷贝

五、matrix矩阵,二维数组
matrix = [[1,2],[4,5]]
#遍历二维数组
for i in matrix:
  for each in i:
    print(each)

for i in matrix:
    for each in i:
        print(each,end = ' ')
    print()

#获取元素
matrix[0]
matrix[0][0] #获取第一行第一列的元素

#创建一个二维列表
a = [0]*3
for i in range(3):
    a[i] = [0]*3

# is 关键字是比对两个对象是不是指向同一个内存空间的
x = "fish"
y = "fish"
x is y #True  #因为字符串内存中只有一份

b = [[0]*3] * 3 #这样创建二维数组,和前面的a不同
a[0] is a[1] # False
b[0] is b[1] # True  #因为b这种创建方式,内存中只有一份 [0,0,0]其它的只是引用。

#二维数组copy
x = [[1,2,3],[4,5,6]]
y = x.copy()
x is y #False
x[0][0] = 9
#打印x、y后发现,x、y都改变了。这就是浅拷贝(好像是只拷贝了引用)

import copy #引入拷贝模块(类似java的类)
y = copy.copy(x) #这还是浅拷贝
y = copy.deepcopy(x)  # 这是深拷贝  x的如上改变,不会影响y了

#列表推导式
oho = [1,2,3,4,5] 
#已知列表中都是数字,让每一个数字都乘以2
for i in range(len(oho)): 
    oho[i] = oho[i] * 2
还有一种就是列表推导式
oho = [i*2  for i in oho]  # [循环体  for遍历]
x = [i+1 for i in range(10)] #得到一个列表,从1到10

x = [[1,2],[4,5]]
y = [row[1] for row in x] #获取矩阵中的第二列,结果为列表 [2,5]
y = [x[i][i] for i in range(len(x))] # 获取对角线 结果 : [1,5]

#这两种方式的结果不完全一致。遍历时修改原内存的值,列表推导式是创建一个新的列表。

#用列表推导式创建一个二维列表
s = [[0]*3 for i in range(2)] 

#列表推导式,可以加 if 条件语句
even = [i for i in range(9) if i%2 == 0]
even
[0, 2, 4, 6, 8]

#用列表推导式,筛选出来 f 开头的单词
words = ["a","f1","f2","b"]
words
['a', 'f1', 'f2', 'b']
s = [i for i in words if i[0] == 'f'] #字符串也是列表?或者是序列
s
['f1', 'f2']

#将二维列表按正序变成一维列表
matrix
[[1, 2], [4, 5]]
s = [col for row in matrix for col in row] #可以看出,除了循环体表达式倒装前置了,两个for循环还是正序
s
[1, 2, 4, 5]

相当于:
s2= []
for row in matrix:
    for col in row:
        s2.append(col)
        
s2
[1, 2, 4, 5]

#列表推导式,每一个for循环都给一个 if 条件语句
_ = [[x,y] for x in range(9) if x%2 == 0 for y in range(9) if y%3 == 0]
_
[[0, 0], [0, 3], [0, 6], [2, 0], [2, 3], [2, 6], [4, 0], [4, 3], [4, 6], [6, 0], [6, 3], [6, 6], [8, 0], [8, 3], [8, 6]]

#python写代码kiss原则  keep it simple and stupid 保持简洁易懂











上一篇 下一篇

猜你喜欢

热点阅读