• Python 切片 day3


    你可以处理列表的部分元素——Python称之为切片 。

    一、使用方法:

      要创建切片,可指定要使用的第一个元素和最后一个元素的索引。

      与函数range() 一样,Python在到达你指定的第二个索引前面的元素后停止。

      要输出列表中的前三个元素,需要指定索引0~3,这将输出分别为0 、1 和2 的元素。

    如下为例子:
    l = ['xiaoming', 'xiaohei', 'xiaobai', 'jaojun'] print(l[0:1]) #切片,顾头不顾尾,不包含后面的元素 print(l[:2]) #冒号前面的不写,代表从最前面0开始 print(l[1:]) #冒号后面的不写,代表从最后面结束 print(l[:]) #等同于 print(l)

    二、适用范围:

      只要能用下标取值的都可以用切片取值;入:字符串、元组、列表

    s = 'abcdefg'
    print(s[:3])#结果为'abc'
    s2 = '1234567'
    print(s2[::-1])#切片的步长如果为负数,则从后往前取 7654321
    print(s2[-1:-5:-2])#倒着取,隔一个一取值 结果为:75

    三、关于列表内存地址的习题

    #题目为移除所有奇数
    li = [1,1,2,3,4,5,6,7,8,9]
    #下面的方法为错误方法:
    for i in li:
        if i%2!=0:
            li.remove(i)
    print(li)
    #打印结果为[1, 2, 4, 6, 8]
    #原因是:移除第一个数后,下标变了,导致下标错乱
    #循环的时候不要删除list里面的元素,会导致下标错乱
    #解决方法:弄两个list,循环li2,删除li1
    
    
    #下面的方法为正确方法:
    li2 = [1,1,2,3,4,5,6,7,8,9]
    for i in li2:
        if i%2!=0:
            li.remove(i)
    print(li)
    
    
    #不能写成li2 = li;li里存的是内存地址,从内存地址找到对应元素;li2相当于和li内存地址相同
    li2 = li#结果li和li2内存地址相同
    print("li内存地址:",id(li))
    print("li2内存地址:",id(li2)) 
    li2 = li[:] #使用切片相当于生成一个新的list,内存地址不同
    print("li内存地址:",id(li))
    print("li2内存地址:",id(li2))

    四、浅拷贝、深拷贝

    l = [12,3,4]
    l2 = l
    l.append('456')
    l2.remove(12)
    print(l2)
    
    import copy
    stus = ['abc','xiaohei','abc2']
    
    stus1 = stus #浅拷贝,内存地址没变
    stus2 = stus[:] #深拷贝,内存地址变了,互不影响
    stus3 = copy.deepcopy(stus) #深拷贝,需要引入copy模块
    
    
    l1 = ['xiaoming', 'xiaohei', 'xiaobai', 'jaojun','xiaolei']
    print(l1[0:6:1])#挨个取
    print(l1[0:6:2])#2为步长,隔n-1个取一个
  • 相关阅读:
    这个帖子主要总结数据库备份方面的问题
    Visual C#.Net 网络程序开发Socket篇
    数据库设计说明书参考模板
    用Visual C#开发WinForm的应用程序
    在ASP.NET页中读取文本文件
    如何通过 SQL Server 链接服务器和分布式查询使用 Excel
    ER概念模型
    SQL Server 存储过程的分页方案比拼
    读出某一个目录的文件和文件夹
    Linux中的定时任务简单操作实例
  • 原文地址:https://www.cnblogs.com/candysalty/p/10974779.html
Copyright © 2020-2023  润新知