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 (数据结构,序列通用的操作)的更多相关文章

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

    索引 序列中的所有元素都是有编号的--从0开始递增.使用负数索引时,Python会从右边,也就是从最后一个元素开始计数,最后一个元素的位置编号是-1.此外,字符串是一个有字符组成的序列,字符串字面值可 ...

  2. Python新手学习基础之数据结构-序列1

    序列概念 序列,顾名思义就是有顺序的列,在Python里序列类型的数据结构包括字符串,列表和元组.既然都是序列类型,说明他们有很多共通点,他们的每一个元素都可以通过指定的偏移量方式(索引操作)来获得, ...

  3. 3年Java开发都知道的Redis数据结构和通用命令

    Redis的数据结构 Redis支持多种不同的数据结构,包括5种基础数据结构和几种比较复杂的数据,这些数据结构可以满足不同的应用场景. 五种基础数据结构 String:字符串,是构建其他数据结构的基础 ...

  4. 通用数据库操作类,前端easyui-datagrid,form

    实现功能:     左端datagrid显示简略信息,右侧显示选中行详细信息,数据库增删改 (1)点击选中行,右侧显示详细信息,其中[新增].[修改].[删除]按钮可用,[保存]按钮禁用 (2)点击[ ...

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

    三维CAD塑造--基于所述基本数据结构一半欧拉操作模型(elar, B_REP) (欧拉操作  三维CAD建模课程 三维CAD塑造 高曙明老师  渲染框架 brep 带洞 带柄 B_REP brep ...

  6. 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 ...

  7. matlab学习笔记10_5 通用字符串操作和比较函数

    一起来学matlab-matlab学习笔记10 10_5 通用字符串操作和比较函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张 ...

  8. 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 ...

  9. Python3标准库:string通用字符串操作

    1. string:通用字符串操作 string模块在很早的Python版本中就有了.以前这个模块中提供的很多函数已经移植为str对象的方法,不过这个模块仍保留了很多有用的常量和类来处理str对象. ...

随机推荐

  1. [2019BUAA人工智能实战_陈泽寅]第1次个人作业

    我们的征程是星辰和大海 一.索引 项目 内容 这个作业属于哪个课程 BUAA人工智能实战 这个作业的要求在哪里 here 我在这个课程的目标是 理论实践相结合,提升自己coding能力 这个作业在哪个 ...

  2. rabbtimq非持久化测试

    send端代码 import pika,time,threading class send(): def __init__(self,que_nam='hello'): self.credential ...

  3. HTML&CSS_基础01

    一.预备知识: # 1. HTML5 是 W3C 与 WHATWG 合作的结果.    W3C 指 World Wide Web Consortium,万维网联盟.    WHATWG 指 Web H ...

  4. 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$要求 ...

  5. python 多线程 ping

    python 多线程 ping 多线程操作可按如下例子实现 #!/usr/bin/env python #encoding: utf8 import subprocess from threading ...

  6. Nginx-动态添加模块

    Nginx动态添加模块 平滑升级 已经安装好的Nginx动态添加模块 说明: 已经安装好的Nginx,需要添加一个未被编译安装的模块,需要怎么弄呢? 这里已安装第三方nginx-rtmp-module ...

  7. Educational Codeforces Round 56 (Rated for Div. 2) D

    给你一个无向图 以及点的个数和边  每个节点只能用1 2 3 三个数字 求相邻 两个节点和为奇数   能否构成以及有多少种构成方法 #include<bits/stdc++.h> usin ...

  8. 【转载】Nginx + Tomcat 实现反向代理

    通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中由代理服务器向Internet上的web服 ...

  9. counter counters 计数器

    counter-reset counter-reset:counter1 /* 重置计数器为 0 */ counter-reset:counter1 0 /* 重置计数器为 0 */ counter- ...

  10. 使用 LD_PRELOAD 变量拦截调用

    背景&原理 很多 a.out 程序都依赖动态库 libc.so, 比如使用 strcmp() 比较密码, 其实是不安全的 使用 LD_PRELOAD 变量可以使该变量中的可链接文件(编译时使用 ...