一、条件语句

  Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。

可以通过下图来简单了解条件语句的执行过程:

  Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。

  Python 编程中 if 语句用于控制程序的执行,基本形式为(同一组必须对齐):

  if 判断条件:

    执行语句1

  else:

    执行语句2

  其中"判断条件"成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范围。

else 为可选语句,当需要在条件不成立时执行内容则可以执行相关语句。

  if 语句的判断条件可以用>(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)来表示其关系。

当判断条件为多个值时,可以使用以下形式:

  if 判断条件1:

    执行语句1

  elif 判断条件2:

    执行语句2

  elif 判断条件3:

    执行语句3

  else:

    执行语句4

  由于 python 并不支持 switch 语句,所以多个条件判断,只能用 elif 来实现,如果判断需要多个条件需同时判断时,可以使用 or (或),表示两个条件有一个成立时判断条件成功;使用 and (与)时,表示只有两个条件同时成立的情况下,判断条件才成功。

  当if有多个条件时可使用括号来区分判断的先后顺序,括号中的判断优先执行,此外 and 和 or 的优先级低于>(大于)、<(小于)等判断符号,即大于和小于在没有括号的情况下会比与或要优先判断。

二、切片语法

  Python的切片是特别常用的功能,主要用于对列表的元素取值。使用切片也会让你的代码显得特别Pythonic。

  切片的主要声明如下,假设现在有一个list,命名为alist:

    alist = [0,1,2,3,4]

  切片语法的基本形式为:

    alist[start:stop:step]

  可以看出对于列表的切片操作有三个参数,分别为:

    start:起始位置

    stop:终止位置

    step:步长

  三个参数都是可选参数,意义为list的下标,即index。step参数默认值为1。表现形式有以下几种:

alist[start:stop]
alist[start:]
alist[:stop]
alist[:]

  • 第一种方式指定了start与stop参数,从start指定的下标开始取alist的元素,直到stop-1,例如 a[1:3] 的结果为 [1,2] 。
  • 第二种方式会从start指定的下标开始,取alist剩余元素。例如 a[1:] 会得到 [1,2,3,4] 。
  • 第三种方式会从alist的开始,取list元素,直到下标为stop-1,例如 a[:4] 会得到结果 [0,1,2,3]
  • 第四种方式没有指定start与stop参数,则会返回整个列表。

  需要注意的是, :stop 表示不在选定切片中的第一个值, alist[start:stop] 的取值类似于数学中的取值范围为 [start, stop) , 所以在步长默认为1的情况下, start-stop 的结果即为所取元素的数量。

负值用法

  start与stop参数为负值

  start与stop的值可以是负值,表示取值是从list的最后开始,而不是开头。 例如:

alist[-1]
alist[-3:]
alist[:-1]

[2,3,4]
[0,1,2,3]

  step参数为负值

  step为负值时候表示将列表逆向,最简单的例子如下:

    alist[::-1]

  输出结果为 [4,3,2,1,0] 。这个例子实际是以下面的这个形式返回,

    [alist[-1], alist[-1-step], ..., alist[0]]

  即从倒数第一个元素开始,每一步加上步长,因为这里步长为负数,所以是减法,直到alist的开头。 知道这个原理,就能明白一些加上了start与stop参数的复杂写法,例如:

  指定了start参数

    alist[1::-1]

  实际上是这样返回:

    [alist[1], alist[1-step], ..., alist[0]]

  因此,返回的是 [1,0]

  指定了stop参数

    alist[:1:-1]

  实际上是这样返回:

    [alist[-1], alist[-1-step], ..., alist[stop+1]]

  因此,返回的是 [4, 3, 2] 。

  同时指定了start与stop参数

  注意,由于是逆序,所以start参数应该大于stop参数。

    alist[3:1:-1]

  实际上是这样返回:

    [alist[start], alist[start-step], ..., alist[stop+1]]

  因此,返回的是 [3,2]

  我们可以看出,

  • 如果指定了start参数,则从start参数index开始取元素,直到遇到stop下标或者list的第一个元素。
  • 如果未指定start参数,则从list倒数第一个元素开始,直到遇到stop下标或者list的第一个元素。

  总结

  切片语法的使用特别灵活,如果正确掌握了它的用法,能够简化你的代码。需要注意的是,Python也提供了slice类用于制造切片,例如:

    alist[start:stop:step]

  实际上等价于

    alist[(slice(start,stop,step))]

												

日常学习python的更多相关文章

  1. D03——C语言基础学习PYTHON

    C语言基础学习PYTHON——基础学习D03 20180804内容纲要: 1 函数的基本概念 2 函数的参数 3 函数的全局变量与局部变量 4 函数的返回值 5 递归函数 6 高阶函数 7 匿名函数 ...

  2. 人工智能时代,应立即学习python

    人工智能时代,应立即学习python 应用:web开发,自动化运维开发,自动化测试,数据分析,机器学习 1.python 快速易学习2.python 基于web开发(zhihu:tornad web框 ...

  3. 国内某Python大神自创完整版,系统性学习Python

    很多小伙伴纠结于这个一百天的时间,我觉得完全没有必要,也违背了我最初放这个大纲上来的初衷,我是觉得这个学习大纲还不错,自学按照这个来也能相对系统的学习知识,而不是零散细碎的知识最后无法整合,每个人的基 ...

  4. 【Python 1-0】10个学习Python的理由以及Python的优势有哪些?

    Python的由来 首发地址 Python的创始人是吉多·范罗苏姆,1989年他在阿姆斯特丹的CWI工作,圣诞节期间,吉多·范罗苏姆为了打发圣诞节的无聊,决定开发一个新的脚本解释程序,作为ABC 语言 ...

  5. 学习python

    最近感觉Python 很不错的样子,乘着这次寒假,不如就先学一下吧. 翻看了一些教程,发现<python 简明教程>质量上乘. 我目前学习python就是打算做一些上位机之类的,好像有点杀 ...

  6. Python学习--Python基础语法

    第一个Python程序 交互式编程 交互式编程不需要创建脚本文件,是通过 Python 解释器的交互模式进来编写代码. linux上你只需要在命令行中输入 Python 命令即可启动交互式编程,提示窗 ...

  7. Linux运维人员如何学习python编程

    Linux运维人员如何学习python编程 从不会写代码,到自己独立能写代码解决问题 .这个问题很重要!盲目学习所谓的项目,最后 还是不会自己写代码解决问题.首先解决了独立能写代码解决问题,再通过项目 ...

  8. 新手学习Python时常见的错误

    最近学习Python,现在把一些常见的错误总结如下: 1)忘记在 if , elif , else , for , while , class ,def 声明末尾添加 :(导致 "Synta ...

  9. 学习Python的三种境界

    前言 王国维在<人间词话>中将读书分为了三种境界:"古今之成大事业.大学问者,必经过三种之境界:'昨夜西风凋碧树,独上高楼,望尽天涯路'.此第一境也.'衣带渐宽终不悔,为伊消得人 ...

随机推荐

  1. MySQL的事务隔离

    提到事务,你肯定会想到ACID(Atomicity.Consistency.Isolation.Durability,即原子性.一致性.隔离性.持久性),今天我们就来说说其中I,也就是“隔离性”. 数 ...

  2. 201871010116-祁英红《面向对象程序设计(java)》第十四周学习总结

    博文正文开头格式:(2分) 项目 内容 <面向对象程序设计(java)> https://home.cnblogs.com/u/nwnu-daizh/ 这个作业的要求在哪里 https:/ ...

  3. seq参数 RANDOM 参数 openssl参数 cut参数

    #seq命令用于以指定增量从首数开始打印数字到尾数 语法: [2] seq [选项] 首数 尾数 [3] seq [选项] 首数 增量 尾数选项: seq 实例 一 存入数据库 然后 输出数据库的代码 ...

  4. 新工具解决消息丢失的bug

    最近在调查一个消息丢失的bug,所幸客户的文本文件里有丢失的记录,但在localdb文件里找不到. 我当时的想法是,在运行report的时候把丢失的记录从文本文件找出来,然后添加到localdb里,最 ...

  5. fastdfs使用总结

    参考:https://www.cnblogs.com/chiangchou/p/fastdfs.html   说明:这篇博客是为了记录我在安装和使用FastDFS分布式文件系统时遇到的问题和解决方法, ...

  6. 新安装的windows 10无法更新报0x80240fff错误的解决方案

    如果windows 10的安装文件比较老,可能会报0x80240fff错误导致无法更新. 网络上说的方法是选择推迟更新,因为这样貌似能让windows选择另外的更新服务器. 但实际上在我遇到的情况问题 ...

  7. 搞定Junit单元测试{非专业}

    1:测试分类 2:常用测试方法 2.1 断言语句 3: 基本测试 4: 组合测试 5:参数化测试 6:分类测试(Category) 1:测试分类  1. 黑盒测试:不需要写代码,给输入值,看程序是否能 ...

  8. JS 查找数组的父节点及祖先节点

    function findAllParent(node, tree, parentNodes=[], index = 0){ if(!node || node.parentId === 0){ ret ...

  9. Java Serializable:明明就一个空的接口嘛

    对于 Java 的序列化,我一直停留在最浅显的认知上——把那个要序列化的类实现 Serializbale 接口就可以了.我不愿意做更深入的研究,因为会用就行了嘛. 但随着时间的推移,见到 Serial ...

  10. RocketMQ(4)---RocketMQ核心配置讲解

    RocketMQ核心配置讲解 RocketMQ的核心配置在broker.conf配置文件里,下面我们来分析下它. 一.broker.conf配置 下面只列举一些常用的核心配置讲解. 1.broker. ...