先举一个例子,取list或tuple中的某几个元素:
    1.取 ['a','b','c','d','e','f'] 第1、2、5、6个元素:
        >>> a = ['a','b','c','d','e','f']
        >>> [ a[0], a[1], a[4], a[5] ]
        ['a', 'b', 'e', 'f']       
      
    2.取前x个元素可以用循环的方式将0~(x-1) 索引范围内的元素取出
   
   
不过这样太繁琐了。使用切片(Slice)会非常方便。
切片语法[x:y:z] , x: 开始切片位置, y:结束切片位置(不包含y), z:xy切片后间隔z个元素输出,默认为1可以省略。 如果x为0 ,那么0可以省略,写作为[:y];如果y为最后一个元素,那么y可以省略,写作[x:]。
取前三个元素(索引为0,1,2)
    >>> ['a','b','c','d','e','f'] [0:3]
    ['a', 'b', 'c']
    or
    >>> a =  ['a','b','c','d','e','f']
    >>> a[0:3]
    ['a', 'b', 'c']
[x:y] ----> 从x开始取到y ,不包含y。
也可以像a[-1] 取倒数第一个元素的方式,支持倒数切片:
    >>> a =  ['a','b','c','d','e','f']
    >>> a[-2:-1]
    ['e']
    >>> a[1:-1]
    ['b', 'c', 'd', 'e']
取前10个元素
    a[:10]
   
取后10个元素
    a[-10:]
   
取11~20个元素
    a[10:20]
取前10个元素,每两个元素取一个(一共取5个)
    a[:10:2]
取全部元素(克隆一个)
    a[:]        #相当于从0取到最后,所以两个值都省略了
字符串也可以看成是一种list ,每一个字符就是每一个元素,因此,字符串也可以使用切片来操作。
    >>> a = 'abcdefghijklmn'          
    >>> a[0:3]
    'abc'
    >>> a[-2:3]
    ''
    >>> a[-2:-1]
    'm'
    >>> a[-1:]
    'n'
 

#练习题
#利用切片操作,实现一个trim()函数,去除字符串首尾的空格
def trim(a):
    lens = len(a)
    if a[:1] == ' ':
        a = a[1:]
        return trim(a) 
    elif a[-1:] == ' ': #elif a[-1:lens] == ' ':  直接用[-1:] 就是最后一个元素了~
        a = a[:lens-1]
        return trim(a)
    else :
        return a
#测试函数
print(trim('   abc'))
print(trim('hello '))
if trim('hello ') != 'hello':
    print('测试失败1!')
elif trim('  hello') != 'hello':
    print('测试失败2!')
elif trim('  hello  ') != 'hello':
    print('测试失败3!')
elif trim('  hello  world  ') != 'hello  world':
    print('测试失败4!')
elif trim('') != '':
    print('测试失败5!')
elif trim('    ') != '':
    print('测试失败6!')
else:
    print('测试成功!')

Day7 python高级特性-- 切片 Slice的更多相关文章

  1. 【转】Python高级特性——切片(Slice)

    摘录廖雪峰网站 定义一个list: 1 L = ['haha','xixi','hehe','heihei','gaga'] 取其前三个元素: >>> L[0],L[1],L[2] ...

  2. Python高级特性(切片,迭代,列表生成式,生成器,迭代器)

    掌握了Python的数据类型.语句和函数,基本上就可以编写出很多有用的程序了. 比如构造一个1, 3, 5, 7, ..., 99的列表,可以通过循环实现: L = [] n = 1 while n ...

  3. Python高级特性——切片(Slice)

    摘录廖雪峰网站 定义一个list: L = ['haha','xixi','hehe','heihei','gaga'] 取其前三个元素: >>> L[0],L[1],L[2] (' ...

  4. 三、python高级特性(切片、迭代、列表生成器、生成器)

    1.python高级特性 1.1切片 list列表 L=['Mli','add','sal','saoo','Lkkl'] L[0:3]  #即为['Mli','add','sal']  从索引0开始 ...

  5. python高级特性:切片/迭代/列表生成式/生成器

    廖雪峰老师的教程上学来的,地址:python高级特性 下面以几个具体示例演示用法: 一.切片 1.1 利用切片实现trim def trim(s): while s[:1] == " &qu ...

  6. 在python&numpy中切片(slice)

     在python&numpy中切片(slice) 上文说到了,词频的统计在数据挖掘中使用的频率很高,而切片的操作同样是如此.在从文本文件或数据库中读取数据后,需要对数据进行预处理的操作.此时就 ...

  7. python高级特性和高阶函数

    python高级特性 1.集合的推导式 列表推导式,使用一句表达式构造一个新列表,可包含过滤.转换等操作. 语法:[exp for item in collection if codition] if ...

  8. Python高级特性(3): Classes和Metaclasses(转)

    原文:Python高级特性(3): Classes和Metaclasses 类和对象 类和函数一样都是Python中的对象.当一个类定义完成之后,Python将创建一个“类对象”并将其赋值给一个同名变 ...

  9. Python高级特性(2):Closures、Decorators和functools(转)

    原文:Python高级特性(2):Closures.Decorators和functools 装饰器(Decorators) 装饰器是这样一种设计模式:如果一个类希望添加其他类的一些功能,而不希望通过 ...

随机推荐

  1. Python_微信开发

    <!-- 发消息功能 --> 0.微信开发的2个库 pip install werobot pip install 1.新建项目 2.项目下新建 robot 的app 3.写robot.p ...

  2. Nmap详解

    扫描方式 -Pn/-P0:扫描前不用ping测试目标是否可达,默认所有目标端口都可达 -sT:TCP Connect扫描,进行完整的TCP三次握手,该类型扫描已被检测,且会在目标日志中记录大量连接请求 ...

  3. ServerLess之云函数实践-天气API

    关注我的个人博客,发掘更多的内容 ServerLess之云函数实践-天气API 前言 云计算是大势所趋 Serverless 架构即"⽆服务器"架构,它是一种全新的架构方式,是云计 ...

  4. 【建议收藏】阿里P7总结的Spring注解笔记,把组件注册讲的明明白白

    环境搭建 注解的方式是通过配置类的方式来注入组件,注解注入要比XML注入的方式简单,注解注入也需要在前者的基础上,添加一个spring-context的包,也是实际开发中常用的方式. 准备所需Jar包 ...

  5. python中操作数据库

    python中要操作数据库,要使用该数据库在python中对应的驱动库,本文介绍python操作mysql数据库 1.首先安装pymysql 2.导入库 3.建立连接 4.建立游标 5.发起请求 6. ...

  6. mysql-查询不同列的数量合计

    车辆违规信息表testmodel_test 表结构: 表字段:cra_id(车牌号),if_weigui(该次行驶是否违规,0是正常,1是违规) 目的: 查询表中共有几辆车,违规的有几辆车: 方法1 ...

  7. Matlab 条件循环函数

    条件判断 if 表达式 语句 elseif 表达式 语句 -. else 语句 end 这个与c语言不同的就是 1:要多一个end 2:还有没有括号 3:else if连在一起 for 循环 for ...

  8. Codeforces Round #665 (Div. 2) D. Maximum Distributed Tree 题解(贪心+易错)

    题目链接 题目大意 给你一课树,要你给每一条边分权值,每条边的权值大于0,他们的乘积等于k,而且要使得n-1条边1的数量尽可能少,定义 f(u,v)为u到v的边权和求 \(\max \sum_{i=1 ...

  9. 如何让文科生5分钟写上Python

    序言 这篇文章是转型后发表的第一篇文章,有必要先聊一下我的写文计划. 串行文章和并行文章 我会按照发文顺序分为串行文章和并行文章.Python 语言本身的内容,我会按照入门.进阶.原理的顺序依次展开. ...

  10. 精尽MyBatis源码分析 - Spring-Boot-Starter 源码分析

    该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址.Mybatis-Spring 源码分析 GitHub ...