美文网首页
python列表学习笔记

python列表学习笔记

作者: 屎倒淋头还嚼便 | 来源:发表于2021-12-08 16:45 被阅读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 保持简洁易懂
    
    
    
    
    
    
    
    
    
    
    
    

    相关文章

      网友评论

          本文标题:python列表学习笔记

          本文链接:https://www.haomeiwen.com/subject/woetfrtx.html