大爽Python入门公开课教案

点击查看教程总目录

序列

序列(sequence): 顾名思义,有序的排列。

有序排列的一串数据。

一种容器,容器内成员有序排列。

python的字符串str,元组tuple,列表str都是序列。

所以字符串str,元组tuple,列表str有些操作是相通的,

都支持序列操作。

序列内的成员个数,一般也称为序列的长度。

可以使用len(sequence)函数获取,

其中sequence为序列变量。

使用示例:

>>> len("abcde")
5
>>> len('')
0
>>> a_tuple = (3, 4)
>>> len(a_tuple)
2
>>> a_list = [1, 0, 0, 1]
>>> len(a_list)
4

索引

索引(index): 序列中元素的位置的值(编号)。

python的索引从0开始,

即序列第一个值的索引为0,

第二个值的索引为1,

第三个值的索引为2。

以此类推。。。

可以通过索引来获取对应位置的数据。

写法为sequence[index]

由于索引从0开始,

也有人喜欢把第一个值称为第0个值。

但是这样会导致交流时理解混乱。

比如一个人说第一个值,到底是列表开头的那个,还是索引为1的那个。

所以为了准确与避免混淆,表达时最好专门说明其索引为几

比如列表中索引为1的值...

而第几个值,还是按照常规意思来理解。

超出索引会报错

IndexError: ... index out of range

使用示例:

字符串

>>> s = "abc"
>>> s[0]
'a'
>>> s[1]
'b'
>>> s[2]
'c'
>>> s[3]
Traceback (most recent call last):
File "<input>", line 1, in <module>
IndexError: string index out of range

元组

>>> t = ("li hua", 18)
>>> t[0]
'li hua'
>>> t[1]
18
>>> t[2]
Traceback (most recent call last):
File "<input>", line 1, in <module>
IndexError: tuple index out of range

列表

>>> numbers = ["one", 2.0, "3", 4, "five"]
>>> numbers[0]
'one'
>>> numbers[1]
2.0
>>> numbers[2]
'3'
>>> numbers[3]
4
>>> numbers[4]
'five'
>>> numbers[5]
Traceback (most recent call last):
File "<input>", line 1, in <module>
IndexError: list index out of range

可以通过

sequence.index(value)也可以得到值对应的索引

但是如果值没出现过的话,会报错ValueError

示例如下:

>>> s = "abc cba"
>>> s.index("a")
0
>>> s.index("c")
2
>>> s.index("d")
Traceback (most recent call last):
File "<input>", line 1, in <module>
ValueError: substring not found

倒序索引

python中索引可以是负数,代表倒着数的序号。

倒数第一个索引是-1,

倒数第二个索引是-2,

倒数第三个索引是-3,

以此类推。。。

示例

>>> numbers = ["one", 2.0, "3", 4, "five"]
>>> numbers[-1]
'five'
>>> numbers[-2]
4
>>> numbers[-5]
'one'
>>> numbers[-6]
Traceback (most recent call last):
File "<input>", line 1, in <module>
IndexError: list index out of range

切片

切片切片,切出一片。从序列中切出一段,

或者说截取出一段,更准确的来说是复制了一段

得到一个新的序列。

注:切片操作不会改变原来的序列。

切片操作的基础语法是sequence[start:end]

取出从start这个索引开始(包含start索引对应的值),

一直到end这个索引为止(不包含end索引对应的值)的这一段。

>>> s = "abcdefg"
>>> s[1]
'b'
>>> s[1:4]
'bcd'
>>> s[4]
'e'
>>> s[4:6]
'ef'

start和end都可以不写,

不写start代表从开头开始,

不写end代表没有end(从start开始后一直取完后面所有的)。

>>> s[:3]
'abc'
>>> s[0:3]
'abc'
>>> s[4:]
'efg'

切片操作时,

start和end可以超出序列长度,不会报错。

>>> s[4:7]
'efg'
>>> s[4:10]
'efg'
>>> s[7:10]
''

start甚至可以大于end,

不过此时取出来的是空(start等于end时也是空)。

>>> s[3:1]
''
>>> s[3:3]
''

解包Unpack

解包Unpack语法不是序列专属的,很多容器都支持这个语法。

解包这个概念比较生僻,不好理解。

那么这么想:

首先,pack是打包的意思,

比如把几个苹果装到一个箱子容器里面

Unpack就是这个过程反过来,

把装有苹果的箱子里的苹果全部取出来。

示例:

>>> loc = (3, 4)
>>> x, y = loc # Unpack
>>> x
3
>>> y
4

上面的x, y = loc就是解包元组

英语来讲就是Unpack the tuple

解包时,序列中有多少个元素,左边就要有对应个数的变量。

数量不匹配就会报错ValueError

>>> a,b,c = loc
Traceback (most recent call last):
File "<input>", line 1, in <module>
ValueError: not enough values to unpack (expected 3, got 2)

解包Unpack的语法,一般是tuple用。

虽然字符串和列表也可以用,但是由于其长度一般不确定,

所以一般不是用这个语法。

修改

注意:

字符串和元组都是不可变对象,不可以修改。

列表是可变对象,可以修改。

修改字符串和元组会报错TypeError

对于列表,可以使用索引来修改对应索引的值。

其语法为list[index]=new_value

示例如下

>>> s = "abcde"
>>> s[0] = "d"
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: 'str' object does not support item assignment
>>> lst = [1, 2, 3, 4, 5]
>>> lst[3] = 6
>>> lst
[1, 2, 3, 6, 5]
>>> lst[0], lst[2] = lst[2], lst[0]
[3, 2, 1, 6, 5]

最后2句补充说明: 先执行等号右边的,

再把等号右边的赋值给等号左边的。

python的字符串是不可变对象,不能直接修改,

有人可能碰到过一些方法,看起来好像修改了字符串。

这些方法本质上都是生成了一个新的字符串。

拓展说明:

对于元组来讲,成员对象不能变,

但是变量的属性修改是可以的。

这是比较复杂的东西,暂不深究。

拼接

序列之间可以使用加法,表示拼接,

会得到一个新的拼到一起的序列。

示例

>>> "123" + "456"
'123456'
>>> (1, 2) + (3, 4)
(1, 2, 3, 4)
>>> ["a", 12] + ["b", 20]
['a', 12, 'b', 20]

大爽Python入门教程 2-2 序列: 字符串、元组与列表的更多相关文章

  1. 大爽Python入门教程 1-2 数与字符串

    大爽Python入门公开课教案 点击查看教程总目录 1 整数与浮点数 整数大家都知道,比如1, 2, 10, 123, 都是整数int. 浮点数是什么呢? 上一节的除法运算,不知道有没有人注意到,其结 ...

  2. 大爽Python入门教程 3-3 循环:`for`、`while`

    大爽Python入门公开课教案 点击查看教程总目录 for循环 可迭代对象iterable 不同于其他语言. python的for循环只能用于遍历 可迭代对象iterable 的项. 即只支持以下语法 ...

  3. 大爽Python入门教程 3-1 布尔值: True, False

    大爽Python入门公开课教案 点击查看教程总目录 1 布尔值介绍 从判断说起 回顾第一章介绍的简单的判断 >>> x = 10 >>> if x > 5: ...

  4. 大爽Python入门教程 2-3 字符串,列表,字典

    大爽Python入门公开课教案 点击查看教程总目录 除了通用的序列方法, 列表和字符串还有些自己的专属方法. 后面介绍有些是英中文对照介绍(英文来自官方文档), 便于大家更深入的去理解其意思. 灵活的 ...

  5. 大爽Python入门教程 2-4 练习

    大爽Python入门公开课教案 点击查看教程总目录 方位输出 第一章有一个思考题,方位变换: 小明同学站在平原上,面朝北方,向左转51次之后(每次只转90度), 小明面朝哪里?小明转过了多少圈? (3 ...

  6. 大爽Python入门教程 3-4 实践例题

    大爽Python入门公开课教案 点击查看教程总目录 1. 求和 使用循环,计算列表所有项的和,并输出这个和. 列表示例 lst = [8, 5, 7, 12, 19, 21, 10, 3, 2, 11 ...

  7. 大爽Python入门教程 3-5 习题

    大爽Python入门公开课教案 点击查看教程总目录 1 求平方和 使用循环,计算列表所有项的平方和,并输出这个和. 列表示例 lst = [8, 5, 7, 12, 19, 21, 10, 3, 2, ...

  8. 大爽Python入门教程 3-6 答案

    大爽Python入门公开课教案 点击查看教程总目录 1 求平方和 使用循环,计算列表所有项的平方和,并输出这个和. 列表示例 lst = [8, 5, 7, 12, 19, 21, 10, 3, 2, ...

  9. 大爽Python入门教程 2-5 *拓展实践,对比与思考

    大爽Python入门公开课教案 点击查看教程总目录 本文偏难. 推荐等第一二三四章上完后,回过来拓展阅读. 基础情景思考 假设有这样一张成绩表 最左边的一列是名字,起名麻烦. 这里直接用ABC...来 ...

随机推荐

  1. MySQL的本地事务、全局事务、分布式事务

    本地事务 事务特性:ACID,其中C一致性是目的,AID是手段. 实现隔离性 写锁:数据加了写锁,其他事务不能写也不能读. 读锁:数据加了读锁,其他事务不能加写锁可以加读锁,可以允许自己升级为写锁. ...

  2. 【死磕NIO】— 阻塞IO,非阻塞IO,IO复用,信号驱动IO,异步IO,这你真的分的清楚吗?

    通过上篇文章([死磕NIO]- 阻塞.非阻塞.同步.异步,傻傻分不清楚),我想你应该能够区分了什么是阻塞.非阻塞.异步.非异步了,这篇文章我们来彻底弄清楚什么是阻塞IO,非阻塞IO,IO复用,信号驱动 ...

  3. 洛谷3973 TJOI2015线性代数(最小割+思维)

    感觉要做出来这个题,需要一定的线代芝士 首先,我们来观察这个柿子. 我们将\(B\)的权值看作是收益的话,\(C\)的权值就是花费. 根据矩阵乘法的原理,只有当\(a[i]和a[j]\)都为\(1\) ...

  4. CF280C Game on tree(期望dp)

    这道题算是真正意义上人生第一道期望的题? 题目大意: 给定一个n个点的,以1号点为根的树,每一次可以将一个点和它的子树全部染黑,求染黑所有点的期望 QwQ说实话,我对期望这种东西,一点也不理解... ...

  5. this指向与call,apply,bind

    this指向与call,apply,bind ❝ 「this」问题对于每个前端同学来说相信都不陌生,在平时开发中也经常能碰到,有时候因为「this」还踩过不少坑,并且「this」问题在面试题中出现的概 ...

  6. Java(16)修饰符

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201619.html 博客主页:https://www.cnblogs.com/testero ...

  7. Kafka消息(存储)格式及索引组织方式

    要深入学习Kafka,理解Kafka的存储机制是非常重要的.本文介绍Kafka存储消息的格式以及数据文件和索引组织方式,以便更好的理解Kafka是如何工作的. Kafka消息存储格式 Kafka为了保 ...

  8. 【c++ Prime 学习笔记】第5章 语句

    C++提供了一组控制流语句,包括条件执行语句.循环语句.跳转语句. 5.1 简单语句 空语句 ; ,最简单的语句 别漏写分号,也别多写 while(cin>>s && s! ...

  9. Matlab/Modelsim图像联合仿真平台

    FPGA图像仿真平台 1 引言 在使用modelsim进行图像算法的功能仿真时,无法得到图像的实时预览,因此直观性有所欠缺.因此可配合matlab使用,通过modelsim读出txt格式的图像,利用m ...

  10. seata序列化日期类型出错

    一.背景 最近在整合seata的过程中,发现如果业务表中存在 datetime 的数据类型,那么在分布式事务中,修改这个字段的值时,会出现如下错误.此处提供2种解决方案. com.fasterxml. ...