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对象. ...
随机推荐
- [2019BUAA人工智能实战_陈泽寅]第1次个人作业
我们的征程是星辰和大海 一.索引 项目 内容 这个作业属于哪个课程 BUAA人工智能实战 这个作业的要求在哪里 here 我在这个课程的目标是 理论实践相结合,提升自己coding能力 这个作业在哪个 ...
- rabbtimq非持久化测试
send端代码 import pika,time,threading class send(): def __init__(self,que_nam='hello'): self.credential ...
- HTML&CSS_基础01
一.预备知识: # 1. HTML5 是 W3C 与 WHATWG 合作的结果. W3C 指 World Wide Web Consortium,万维网联盟. WHATWG 指 Web H ...
- MT【330】u,v,w法
已知$a^2+b^2+c^2=1$求$abc(a+b+c)$的最小值.(2018辽宁预赛解答压轴题) 不妨设$a+b+c=3u,ab+bc+ca=3v^2,abc=w^3$,令$u^2=tv^2$要求 ...
- python 多线程 ping
python 多线程 ping 多线程操作可按如下例子实现 #!/usr/bin/env python #encoding: utf8 import subprocess from threading ...
- Nginx-动态添加模块
Nginx动态添加模块 平滑升级 已经安装好的Nginx动态添加模块 说明: 已经安装好的Nginx,需要添加一个未被编译安装的模块,需要怎么弄呢? 这里已安装第三方nginx-rtmp-module ...
- Educational Codeforces Round 56 (Rated for Div. 2) D
给你一个无向图 以及点的个数和边 每个节点只能用1 2 3 三个数字 求相邻 两个节点和为奇数 能否构成以及有多少种构成方法 #include<bits/stdc++.h> usin ...
- 【转载】Nginx + Tomcat 实现反向代理
通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中由代理服务器向Internet上的web服 ...
- counter counters 计数器
counter-reset counter-reset:counter1 /* 重置计数器为 0 */ counter-reset:counter1 0 /* 重置计数器为 0 */ counter- ...
- 使用 LD_PRELOAD 变量拦截调用
背景&原理 很多 a.out 程序都依赖动态库 libc.so, 比如使用 strcmp() 比较密码, 其实是不安全的 使用 LD_PRELOAD 变量可以使该变量中的可链接文件(编译时使用 ...