Lesson 2-1 (数据结构,序列通用的操作)
2.0 数据结构
--- 数据结构是以某种方式组合起来的数据元素集合。
--- python的常见的数据结构

2.1 序列(sequence)
--- 序列中的每个元素都有编号,即索引(也称为下标)。
--- 第一个位置索引为0,第二为1,依次类推。也可用负索引,末尾位置为-1,倒数第二为-2,依次类推。
--- 元组是一种特殊的序列,类似于列表,但是不能修改。
2.2 通用的序列操作
2.2.1 索引(indexing)
--- 可通过索引来获取序列中该位置的元素,索引只能是整数,不能是浮点数。
--- 序列从左往右,索引由0开始递增;序列从右往左,索引由-1开始递减。
>>> seq = "Hello world!"
>>> seq[0]
'H'
>>> seq[7]
'o'
>>> seq[-1]
'!'
>>> seq[-3]
'l'
>>>
--- 多重序列中的索引表示法
>>> seq = [["H", "e", "l", "l", "o"], ["w", "o", "r", "l", "d"]]
>>> seq[0]
['H', 'e', 'l', 'l', 'o']
>>> seq[0][1]
'e'
>>> seq[-1][-3]
'r'
>>>
2.2.2 切片(slicing)
--- 使用索引可以访问序列中的单个元素,使用切片可以访问序列中特定范围内的元素。
--- 切片表示法:[ A : B : C ] ,其中,A表示切片开始处的索引(包括),B表示切片结束处的索引(不包括),C表示切片的步长(可省略,默认为1,不能为0,但可以为负数)。
--- 即A和B是两个索引,用来指定切片的边界,并遵循左闭右开原则。
>>> seq = "Hello world!"
>>> seq[1:7]
'ello w'
>>> seq[1:7:2]
'el '
>>> seq[-3:-1]
'ld'
>>> seq[-10:-1:3]
'l r'
>>>
--- 当步长为默认或正数时,A索引必须比B索引位于序列的左边,否则访问到的是空序列。步长为负数时,则正好相反。
>>> seq = "Hello world!"
>>> seq[7:2]
''
>>> seq[-1:-5]
''
>>>
--- 省略表示法。如果从序列最左边开始,则A索引可省略;如果到序列最末尾结束,则B索引可省略;如果A、B索引都省略,则表示访问整个序列。
>>> seq = "Hello world!"
>>> seq[ :7]
'Hello w'
>>> seq[-7: ]
' world!'
>>> seq[ : ]
'Hello world!'
>>>
--- 步长为负数时,表示从序列的右边开始往左访问序列中的元素。A、B索引为空,步长为-1,则表示颠倒顺序访问序列中的元素。
>>> seq = "Hello world!"
>>> seq[7:1:-1]
'ow oll'
>>> seq[7:1:-2]
'o l'
>>> seq[-2:-8:-1]
'dlrow '
>>> seq[-2:-8:-2]
'drw'
>>> seq[ : :-1]
'!dlrow olleH'
>>>
2.2.3 序列相加
--- 可使用加法运算符拼接序列
--- 不能拼接不同类型的序列
>>> seq_1 = "Hello "
>>> seq_2 = "world!"
>>> seq = seq_1 + seq_2
>>> seq
'Hello world!'
>>> seq_1 = "Hello "
>>> seq_2 = [1, 2, 3]
>>> seq = seq_1 + seq_2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: must be str, not list
>>>
2.2.4 序列乘法(复制)
--- 序列与整数n相乘时,将复制这个序列n次来得到一个新序列,从而实现序列的复制。
>>> seq = "Hello " * 5
>>> seq
'Hello Hello Hello Hello Hello '
>>>
2.2.5 成员资格
--- 检查特定值是否包含在序列中,使用 in 和 not in 运算符。检查结果返回布尔值True和False。
>>> seq = "Hello world!"
>>> "e" in seq
True
>>> "h" in seq
False
>>> "h" not in seq
True
>>>
2.2.6 序列长度、最小值和最大值
--- 可通过内置函数len、min和max得出序列相对应的长度、最小值和最大值。最小、最大值比较依据元素在ASCII码表中的ASCII值。
>>> seq = "Hello world!"
>>> len(seq)
12
>>> min(seq)
' '
>>> max(seq)
'w'
>>> seq = [1, 2, 3, -4]
>>> min(seq)
-4
>>> max(seq)
3
>>>
Lesson 2-1 (数据结构,序列通用的操作)的更多相关文章
- 《python基础教程》笔记之 序列通用操作
索引 序列中的所有元素都是有编号的--从0开始递增.使用负数索引时,Python会从右边,也就是从最后一个元素开始计数,最后一个元素的位置编号是-1.此外,字符串是一个有字符组成的序列,字符串字面值可 ...
- Python新手学习基础之数据结构-序列1
序列概念 序列,顾名思义就是有顺序的列,在Python里序列类型的数据结构包括字符串,列表和元组.既然都是序列类型,说明他们有很多共通点,他们的每一个元素都可以通过指定的偏移量方式(索引操作)来获得, ...
- 3年Java开发都知道的Redis数据结构和通用命令
Redis的数据结构 Redis支持多种不同的数据结构,包括5种基础数据结构和几种比较复杂的数据,这些数据结构可以满足不同的应用场景. 五种基础数据结构 String:字符串,是构建其他数据结构的基础 ...
- 通用数据库操作类,前端easyui-datagrid,form
实现功能: 左端datagrid显示简略信息,右侧显示选中行详细信息,数据库增删改 (1)点击选中行,右侧显示详细信息,其中[新增].[修改].[删除]按钮可用,[保存]按钮禁用 (2)点击[ ...
- 三维CAD塑造——基于所述基本数据结构一半欧拉操作模型
三维CAD塑造--基于所述基本数据结构一半欧拉操作模型(elar, B_REP) (欧拉操作 三维CAD建模课程 三维CAD塑造 高曙明老师 渲染框架 brep 带洞 带柄 B_REP brep ...
- python的reduce函数的使用方法详解以及使用案例,相加,相乘(处理一个序列,然后把序列进程合并操作)
1.求列表的数字相加之和,还是之前的习惯,写for循环来实现 num_1=[1,2,3,4,5,6,7,8,9] a=0 for n in num_1: #a=a+n a+=n print (a) C ...
- matlab学习笔记10_5 通用字符串操作和比较函数
一起来学matlab-matlab学习笔记10 10_5 通用字符串操作和比较函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张 ...
- Codeforces Round #304 (Div. 2) B. Soldier and Badges【思维/给你一个序列,每次操作你可以对一个元素加1,问最少经过多少次操作,才能使所有元素互不相同】
B. Soldier and Badges time limit per test 3 seconds memory limit per test 256 megabytes input standa ...
- Python3标准库:string通用字符串操作
1. string:通用字符串操作 string模块在很早的Python版本中就有了.以前这个模块中提供的很多函数已经移植为str对象的方法,不过这个模块仍保留了很多有用的常量和类来处理str对象. ...
随机推荐
- Java中的String,StringBuilder,StringBuffer
String被final修饰,不可变,每次更改其实是重新创建了一个对象.StringBuilder,StringBuffer是可变的. StringBuffer是线程安全的,StringBuilder ...
- Java PDF转图片
maven依赖: <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbo ...
- python第十一天
今日内容 1. 函数的参数 2. 函数对象 -- 函数名 * * * *重点! 3. 函数 的嵌套调用 1. 形参与实参: 函数介绍: 1.1 函数为什么要有参数: 因为内部的函数体需要外部的数据 ...
- plink计算两个SNP位点的连锁不平衡值(LD)
PLINK提供了“--ld”的参数计算两个SNP位点的连锁不平衡值. 命令如下: plink --file file --ld rs123 rs134 --out rs123_rs134 生成如下数据 ...
- C++ STL的一些操作
priority_queue 最常用的当然是在dij的时候. #include <queue> struct node { int x, dis; bool operator < ( ...
- (双指针 二分) leetcode 167. Two Sum II - Input array is sorted
Given an array of integers that is already sorted in ascending order, find two numbers such that the ...
- C#利用 HttpWebRequest 类发送post请求,出现“套接字(协议/网络地址/端口)只允许使用一次”问题
声明:问题虽然已经被解决,但是并没有明白具体原理,欢迎大佬补充. 最近网站出现一个问题,在C#里面使用 HttpWebRequest 类去发送post请求,偶尔 会出现 “套接字(协议/网络地址/端 ...
- Daily Codeforces 计划 训练时录
时间 场次 过题数目 补题数目 难易度 2019.4.7 codeforces-1141 ...
- Django web编程2 -- 编辑页面内容
你将创建一些表单,让用户能够添加主题和条目,以及编辑既有的条目.你还将学习Django如何防范对基于表单的网页发起的常见攻击,这让你无需花太多时间考虑确保应用程序安全的问题. 然后,我们将实现一个用户 ...
- CountDownLatch、CyclicBarrier、Semaphore共同之处与区别以及各自使用场景
区别 CountDownLatch 使一个线程A或是组线程A等待其它线程执行完毕后,一个线程A或是组线程A才继续执行.CyclicBarrier:一组线程使用await()指定barrier,所有线程 ...