Lesson 2-1 (数据结构,序列通用的操作)

2.0 数据结构

--- 数据结构是以某种方式组合起来的数据元素集合。

--- python的常见的数据结构

2.1 序列(sequence)

--- 序列中的每个元素都有编号,即索引(也称为下标)。

--- 第一个位置索引为0,第二为1,依次类推。也可用负索引,末尾位置为-1,倒数第二为-2,依次类推。

--- 元组是一种特殊的序列,类似于列表,但是不能修改。

2.2 通用的序列操作

2.2.1 索引(indexing)

--- 可通过索引来获取序列中该位置的元素,索引只能是整数,不能是浮点数。

--- 序列从左往右,索引由0开始递增;序列从右往左,索引由-1开始递减。

 1 >>> seq = "Hello world!"
 2 >>> seq[0]
 3 ‘H‘
 4 >>> seq[7]
 5 ‘o‘
 6 >>> seq[-1]
 7 ‘!‘
 8 >>> seq[-3]
 9 ‘l‘
10 >>> 

--- 多重序列中的索引表示法

1 >>> seq = [["H", "e", "l", "l", "o"], ["w", "o", "r", "l", "d"]]
2 >>> seq[0]
3 [‘H‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘]
4 >>> seq[0][1]
5 ‘e‘
6 >>> seq[-1][-3]
7 ‘r‘
8 >>> 

2.2.2 切片(slicing)

--- 使用索引可以访问序列中的单个元素,使用切片可以访问序列中特定范围内的元素。

--- 切片表示法:[ A : B : C ]   ,其中,A表示切片开始处的索引(包括),B表示切片结束处的索引(不包括),C表示切片的步长(可省略,默认为1,不能为0,但可以为负数)。

--- 即A和B是两个索引,用来指定切片的边界,并遵循左闭右开原则。

 1 >>> seq = "Hello world!"
 2 >>> seq[1:7]
 3 ‘ello w‘
 4 >>> seq[1:7:2]
 5 ‘el ‘
 6 >>> seq[-3:-1]
 7 ‘ld‘
 8 >>> seq[-10:-1:3]
 9 ‘l r‘
10 >>> 

--- 当步长为默认或正数时,A索引必须比B索引位于序列的左边,否则访问到的是空序列。步长为负数时,则正好相反。

>>> seq = "Hello world!"
>>> seq[7:2]
‘‘
>>> seq[-1:-5]
‘‘
>>> 

--- 省略表示法。如果从序列最左边开始,则A索引可省略;如果到序列最末尾结束,则B索引可省略;如果A、B索引都省略,则表示访问整个序列。

1 >>> seq = "Hello world!"
2 >>> seq[ :7]
3 ‘Hello w‘
4 >>> seq[-7: ]
5 ‘ world!‘
6 >>> seq[ : ]
7 ‘Hello world!‘
8 >>> 

--- 步长为负数时,表示从序列的右边开始往左访问序列中的元素。A、B索引为空,步长为-1,则表示颠倒顺序访问序列中的元素。

 1 >>> seq = "Hello world!"
 2 >>> seq[7:1:-1]
 3 ‘ow oll‘
 4 >>> seq[7:1:-2]
 5 ‘o l‘
 6 >>> seq[-2:-8:-1]
 7 ‘dlrow ‘
 8 >>> seq[-2:-8:-2]
 9 ‘drw‘
10 >>> seq[ : :-1]
11 ‘!dlrow olleH‘
12 >>> 

2.2.3 序列相加

--- 可使用加法运算符拼接序列

--- 不能拼接不同类型的序列

 1 >>> seq_1 = "Hello "
 2 >>> seq_2 = "world!"
 3 >>> seq = seq_1 + seq_2
 4 >>> seq
 5 ‘Hello world!‘
 6 >>> seq_1 = "Hello "
 7 >>> seq_2 = [1, 2, 3]
 8 >>> seq = seq_1 + seq_2
 9 Traceback (most recent call last):
10   File "<stdin>", line 1, in <module>
11 TypeError: must be str, not list
12 >>> 

2.2.4 序列乘法(复制)

--- 序列与整数n相乘时,将复制这个序列n次来得到一个新序列,从而实现序列的复制。

1 >>> seq = "Hello " * 5
2 >>> seq
3 ‘Hello Hello Hello Hello Hello ‘
4 >>> 

2.2.5 成员资格

--- 检查特定值是否包含在序列中,使用 in 和 not in 运算符。检查结果返回布尔值True和False。

1 >>> seq = "Hello world!"
2 >>> "e" in seq
3 True
4 >>> "h" in seq
5 False
6 >>> "h" not in seq
7 True
8 >>> 

2.2.6 序列长度、最小值和最大值

--- 可通过内置函数len、min和max得出序列相对应的长度、最小值和最大值。最小、最大值比较依据元素在ASCII码表中的ASCII值。

 1 >>> seq = "Hello world!"
 2 >>> len(seq)
 3 12
 4 >>> min(seq)
 5 ‘ ‘
 6 >>> max(seq)
 7 ‘w‘
 8 >>> seq = [1, 2, 3, -4]
 9 >>> min(seq)
10 -4
11 >>> max(seq)
12 3
13 >>> 

原文地址:https://www.cnblogs.com/jlufcs/p/10357319.html

时间: 2024-07-30 09:30:48

Lesson 2-1 (数据结构,序列通用的操作)的相关文章

Python(5)--数据结构-序列-通用操作

数据结构: 数据结构是以某种方式(如通过编号)组合起来的数据元素(如数.字符乃至其他数据结构)集合.在Python中,最基本的数据结构为序列(sequence). 序列: 序列中的每个元素都有编号,即其位置或索引,其中第一个元素的索引为0,第二个元素的索引为1,依此类推.在有些编程语言中,从1开始给序列中的元素编号,但从0开始指出相对于序列开头的偏移量.同时可回绕到序列末尾,用负索引表示序列末尾元素的位置. 通用序列操作: 索引: 序列中的所有元素都有编号,也就是索引,从0递增,使用索引来访问元

《python基础教程》笔记之 序列通用操作

索引 序列中的所有元素都是有编号的--从0开始递增.使用负数索引时,Python会从右边,也就是从最后一个元素开始计数,最后一个元素的位置编号是-1.此外,字符串是一个有字符组成的序列,字符串字面值可以直接使用索引.如果一个函数调用返回一个序列,那么可以直接对返回结果进行索引操作.如 #根据给定的年月日以数字形式打印出日期 months = ['January', 'February', 'march', 'May', 'June', 'August', 'September', 'Octobe

python基本数据结构序列

python基本数据结构序列 ,六种内建序列类型:列表 元组字符串  Unicode字符串  buff对象和xrange对象 序列通用操作: 索引:元素的编号是从 0开始的 到索引号为负数时 查找方式是从右到左的 索引写在[]中 分片:类似索引的操作可以指定范围,当为一个对象创造副本时可以用 b = a[:] 这样的形式创建,这样 当 a被操作时不会影响 b  因为他们指向的不是同一块区域 相加:表示连接操作,列表连接后是新的列表不能改变列表原有的结构,序列相加时候要同种类型  进行,否则会报

使用Linq中的Distinct方法对序列进行去重操作

使用Linq提供的扩展方法Distinct可以去除序列中的重复元素. 该方法具有以下两种重载形式: (1)public static IEnumerable<TSource> Distinct<TSource>(this IEnumerable<TSource> source) (重载1) 通过使用默认的相等比较器对值进行比较并返回序列中的非重复元素. (2)publicstatic IQueryable<TSource> Distinct<TSour

数据结构之链表单向操作总结

链表是数据结构的基础内容之一,下面就链表操作中的创建链表.打印链表.求取链表长度.判断链表是否为空.查找结点.插入结点.删除结点.逆转链表.连接链表.链表结点排序等进行总结. 1.创建表示结点的类,因为链表操作中需要比较结点,因此结点需要实现comparable接口. public class Node implements Comparable<Node> { private Object data; private Node next; //构造函数 public Node() { thi

PHP类初识,通用数据库操作类,前端easyui-datagrid,form

实现功能:     左端datagrid显示简略信息,右侧显示选中行详细信息,数据库增删改 (1)点击选中行,右侧显示详细信息,其中[新增].[修改].[删除]按钮可用,[保存]按钮禁用 (2)点击[新增]按钮,[修改],[删除]按钮禁用,[保存]按钮启用 (3)点击[修改]按钮,[新增],[删除]按钮禁用 难点:通用数据库操作类中insert方法跟update方法 最终效果图: 前端功能不是很完善,按钮之间逻辑还是有点问题,最后补充前端代码 其中Formain.php对前端传值判断,并调用ac

IO包中的其他类 打印流,序列流,操作对象,管道流,RandomAccessFile,操作基本数据类型,操作字节数组

打印流,序列流,操作对象,管道流,RandomAccessFile,操作基本数据类型,操作字节数组 一.打印流: 该流提供了打印方法,可以将各种数据类型的数据都原样打印. 字节打印流PrintStream构造函数可以接收的参数类型1.File对象 File2.字符串路径 String3.字节输出流 OutputStream 字符打印流PrintWriter(更常用)1.File对象 File2.字符串路径 String3.字节输出流 OutputStream4.字符输出流 Writer publ

三维CAD塑造——基于所述基本数据结构一半欧拉操作模型

三维CAD塑造--基于所述基本数据结构一半欧拉操作模型(elar, B_REP) (欧拉操作  三维CAD建模课程 三维CAD塑造 高曙明老师  渲染框架 brep 带洞 带柄 B_REP brep elar 扫成 扫成操作) 今年选了高老师的三维CAD建模课.zju选了这课应该就知道最后要做一个程序作业--基于半边数据结构的基本欧拉操作实现建模.要求必须建带有洞的模型. (欧拉操作  三维CAD建模课 三维CAD建模 高署明老师  渲染框架 brep 带洞 带柄 B_REP brep elar

spring boot+tkmybatis(mapper)工具实现通用数据操作接口时遇到的问题

最近在做一个sb+tkmybatis整合的可以提供通用数据操作接口的demo,然而出现了很诡异的事情.,使用mapper提供的selectByPrimaryKey接口返回结果时报异常: java.lang.ClassCastException: com.yhq.ssmdemo.web.mysql.pojo.Tree cannot be cast to com.yhq.ssmdemo.web.mysql.pojo.Trees ...什么鬼?自己转换自己?还报异常?搞了一整天都不知道怎么回事,去看m