参考:

Note

1.掌握了Python的基础语法之后,就可以写出很多很有用的程序了,比如打印1-90的奇数:

#!/usr/bin/env python3

L = []

n = 1

while n <= 90 :
L.append(n)
n = n + 2 print(L)
sh-3.2# ./easyprogram.py
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89]

但是在Python中,代码不是越多越好,而是越少越好。代码不是越复杂越好,而是越简单越好。

本章介绍的高级特性,目的就是缩短代码,一行能做到的决不用五行,代码越少,开发效率越高。

2.切片(slice) 是Python的一种高级特性,主要用于Python中list和tuple的截取。

之前截取list中前三个元素的方法:

L = ['Chen', 20, '952693358', 'cnblogs', 'Github']

newL1 = [L[0], L[1], L[2]]

print(newL1)
newL2 = []

for i in range(3) :
newL2.append(L[i]) print(newL2)

output:

['Chen', 20, '952693358']

使用切片截取的方法:

slice1 = L[0:3]	# L[:3]

就可以很轻松的得到前三个元素。L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。

其他用法如下:

(1)从索引i开始取a个元素:L[i:i+a]

eg.

slice1 = L[1:3]

output:

[20, '952693358']

(2)倒数切片,利用Python支持负数索引的特点:L[-i:-j] => 取倒数第i个到倒数第j-1个元素。

eg.

slice1 = L[-3:]    # ie.取后三个

print(slice1)

slice1 = L[-3:-1]  # ie.取倒数第三个到倒数第二个

print(slice1)

注意,最后一个元素的索引是-1.

output:

['952693358', 'cnblogs', 'Github']
['952693358', 'cnblogs']

3.demo

创建一个含整数0->99的list:

#!/usr/bin/env python3

L = []

for i in range(100) :
L.append(i) print(L)
sh-3.2# ./slice2.py
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

a.取前十个数:

a = L[0:10] # L[:10]

print(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

b.后10个数:

b = L[-10:] 

print(b)
[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

c.前11-20个数:

c = L[10:20]

print(c)
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

d.前10个数,每两个取一个

d = L[:10:2] # 0 2 4 ...

print(d)

每两个取一个,ie.元素之间间距是n-1(L[::n])。

[0, 2, 4, 6, 8]

e.所有数,每5个取一个:

e = L[::5] # 0 5 10 15 ...

print(e)
[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]

4.tuple也是一种list,唯一区别是tuple不可变。因此,tuple也可以用切片操作,只是操作的结果仍是tuple。

5.字符串也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:

strs = 'WhenProgrammingFeelingHappy'

strs1 = strs[:15]

print(strs1)

strs2 = strs[-12:]

print(strs2)
WhenProgramming

FeelingHappy

2017/2/4

Python学习札记(十五) 高级特性1 切片的更多相关文章

  1. Python学习札记(十九) 高级特性5 迭代器

    参考:迭代器 Note 1.可用于for循环的对象有两类:(1)集合数据类型:list tuple dict str set (2)Generator:生成器和含yield语句的函数.这些可以直接作用 ...

  2. Python学习札记(十八) 高级特性4 生成器

    参考:生成器 Note 1.通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的,且容易造成空间浪费.所以,如果列表元素可以按照某种算法推算出来,那我们可以在循环的过程中 ...

  3. Python学习札记(十六) 高级特性2 迭代

    参考:迭代 Note 1.如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration). 在C.C++.Java等语言中,for循 ...

  4. Python进阶:全面解读高级特性之切片!

    导读:切片系列文章连续写了三篇,本文是对它们做的汇总.为什么要把序列文章合并呢?在此说明一下,本文绝不是简单地将它们做了合并,主要是修正了一些严重的错误(如自定义序列切片的部分),还对行文结构与章节衔 ...

  5. python学习第十五天 -面向对象之继承和多态

    大家都知道面向对象的三大特性:封装,继承,多态.封装特性在上一章节已经讲解过.这一章节主要讲解继承和多态. 继承: 当定义一个类的时候,可以从现有的类进行继承.那么新定义的类可以称为子类,被继承的现有 ...

  6. Python 学习 第十五篇:模块搜索路径和包导入

    在导入自定义的模块时,除了指定模块名之外,也需要指定目录,由于Python把目录称作包,因此,这类导入被称为包导入.包导入把计算机上的目录变成Python的命名空间,而目录中所包含的子目录和模块文件则 ...

  7. Python学习第十五篇——类继承和类实例化

    学习Python类时,我们明白了类的本质,以及所谓的面向对象编程思想强调的对事物本身的属性,我们对某一类事物进行描述——采用了很多方法,这些方法描述了类的属性(比如猫科动物的眼睛,四肢,是否哺乳类等等 ...

  8. python 学习笔记十五 web框架

    python Web程序 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. Python的WEB框架分为两类: 自己写socket,自 ...

  9. python 学习笔记十五 django基础

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...

随机推荐

  1. 剑指Offer——合并两个排序的链表

    题目描述: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 分析: 苦力活,使用两个指针分别指向未被合并的两个链表的首部,比较两个首部数值的大小,合并数值 ...

  2. redis之持久化操作

    简介 Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集 合和有序集合.支持在服务器端计算集合的并,交和补集(d ...

  3. postman 断言

    //断言 pm.test("message等于'操作成功'", function () { var jsonData = pm.response.json(); console.l ...

  4. areas表-省市区

    不全,缺少台湾省.香港.澳门:新疆重复了 /* Navicat MySQL Data Transfer Source Server : win7_local Source Server Version ...

  5. 如何查看windows某个目录下所有文件/文件夹的大小?

    如何查看windows某个目录下所有文件/文件夹的大小? TreeSize Free绿色汉化版是一款硬盘空间管理工具,用树形描述出来,能够显示文件大小和实际占用空间数及浪费的空间等信息,让你做出相应的 ...

  6. iOS版微信6.5.21发布 适配iPhone X

    昨日,iOS版微信迎来v6.5.21正式版发布,本次升级主要适配iPhone X,在聊天中查找聊天内容时,可以查找交易消息.可以给聊天中的消息设置日期提醒.上一个正式版v6.5.16发布于9月13日, ...

  7. SDUT3141:Count(哈希)好题

    题目:传送门 题目描述 You are given an integer array s[] and are asked to count how many positions a, b, c and ...

  8. C++基础之头文件和源文件的关系

    今天找了个解析xml的开源C++项目tinyxml,按照网上的说法去编译,但是一直编译不通过,"无法打开头文件tinyxml.h",但是明明我在工程底下有了这个文件,对于我这种初学 ...

  9. DEPHI XE5 XE6 ANDROID IOS开发的几点体会

    DEPHI XE5 XE6 ANDROID IOS开发的几点体会 2014-09-04 20:48 1.不纠结于APK或者APP的大小.现在的客户端设备都很廉价,300元以上的新安卓设备都不在乎软件的 ...

  10. 数据结构 练习21-trie的原理分析和应用

    前言 今天具体分析一下trie树,包括:原理分析,应用场合,复杂度分析,与hash的比较,源码展现.大部分内容来自互联网,文中会注明出处. 原理分析 主要是hash树的变种,先看下图: 每一个点存储一 ...