• Python 学习随笔


     【Python - 菜鸟编程】

    【字符串-列表】

    Python字符串是一个由字符组成的序列,索引0指向第一个元素;

    使用负数索引时,python会从右边(最后1个元素)开始计数,最后一个元素的位置索引是-1,第二个是-2,以此类推;

    【列表-分片操作】

    可以使用分片操作来访问一定范围内的元素:第1个索引是需要提取部分的第一个元素的编号,第2个索引则是分片之后剩下部分的第1个元素的编号;参考如下代码:

    >>>numbers = [1,2,3,4,5,6,7,8,9,10]

    >>>numbers[3:6]

    [4,5,6]

    >>>numbers[0:1]

    [1]

    解析:分片操作的第1个索引是3,那也就是原列表的第4个元素‘4’;分片操作的第2个索引是6,也就是分片之后剩下部分的第1个元素‘7’(因‘7’的索引是6);所以numbers[3:6]分片操作后的结果是[4,5,6]

    简而言之,分片操作的实现需要提供两个索引的作为边界,第1个索引的元素包含在分片内,第2个索引不包含在分片内

    注意:如果分片操作第1个索引指向的元素比第2个索引指向的元素晚出现(需要区分是从前往后分片还是从后往前进行分片),结果会是一个空的序列。如numbers[-3:0]会得到一个空序列:[]

    技巧:如果分片操作需要包含序列结尾的所有元素,只需要置第2个索引值为空即可,如numbers[-3:] -> [8,9,10]; 这样的操作同样适用序列开始的元素numbers[0:3] -> [1,2,3]

    【列表-分片操作-设置步长】

    分片操作其实会有3个索引值,其中第3个索引值就是步长,默认值是1;例如:numbers[0:10:2] -> [1,3,5,7,9]

    步长可以是负数,即从右往左提取元素:numbers[8:3:-1] -> [9,8,7,6,5]; numbers[9:0:-2] -> [10,8,6,4,2]

    注意:如从右往左提取元素,若第1个索引值超出索引范围,则分片操作提取的一个元素是原序列的最后一个元素:numbers[9:0:-2]  = numbers[10:0:-2] = numbers[11:0:-2] -> [10,8,6,4,2]

    如从左往右提取元素,若第2个索引值超出索引范围,分片操作则提取原序列符合步长要求的最后一个元素:numbers[0:9:2]  = numbers[0:10:2] = numbers[0:11:2] -> [1,3,5,7,9]

    【列表-分片操作-赋值】

    1、使用分片赋值,可以使用与原序列不等长的序列分片替换

    name = list('Perl') -> ['P', 'e', 'r', 'l']

    name[1:] = list('ython') -> ['P', 'y', t'', 'h', 'o', 'n']

    2、可以在不需要替换任何原有元素的情况下插入新的元素:

    >>>numbers = [1, 5]

    >>>numbers[1:1] = [2,3,4] 

    >>>numbers

    [1,2,3,4,5]

    3、可以通过分片操作进行元素的删除

    >>>numbers=[1,2,3,4,5]

    >>>numbers[1:4] = []    # del numbers[1:4]

    >>>numbers

    [1,5]

    【列表-相加操作】

    两种相同类型的序列才可以进行相加操作:[1,2,3] + [4,5,6] -> [1,2,3,4,5,6];  [1,2,3] + [‘Hello’] -> [1,2,3,‘Hello’]; [1,2,3] + 'Hello' -> ERROR: 列表和字符串是无法连接在一起,尽管他们都是序列

    还可以使用内建函数extend进行连接操作:

    >>>a = [1,2,3]

    >>>b = [4,5,6]

    >>>a.expend(b)

    >>>a

    [1,2,3,4,5,6]

    两者最主要区别在于:extend方法修改了被扩展的序列,而原始的连接操作(+)会创建一个包含了a和b的副本的新序列,连接后再返回一个全新的序列。所以若有如下连接操作则会比extend方法效率低:a = a + b

  • 相关阅读:
    Intellij IDEA 快捷键整理
    Jquery Datatables 请求参数及接收参数处理
    Java 并发编程实战 摘要
    【树莓派】关于盒子服务检测
    RPi Desktop盒子安装与服务配置
    使用Jmeter对API进行性能测试
    【树莓派】RPi desktop系统重启或关机挂起几个问题:plymouth-reboot.service、plymouth-poweroff.service、Deconfiguring network interfaces
    【自动化测试】基于IntelliJ IDEA的Gradle和testNG
    【树莓派】树莓派盒子性能监控管理
    【SCM】关于Gradle与maven的几篇文章
  • 原文地址:https://www.cnblogs.com/juicy/p/7777917.html
Copyright © 2020-2023  润新知