数据结构是计算机存储,组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。

  在Python中,最基本的数据结构为序列(sequence)。序列中的每个元素都有编号:从0开始递增,即其位置或索引,其中第一个元素的索引为0,第二个元素的索引为1,依此类推。最后一个元素的位置为-1。

  Python包含6种内建的序列:字符串,Unicode字符串,列表,元组,buffer对象和xrang对象。

  字符串

  与数字一样,字符串也是值,用单引号或双引号括起来。'Hello world!' 或 "Hello world!"

  列表

  列表由一系列按特定顺序排列的元素组成,用[]括起来。列表中的元素可以是数字,字符串,列表,元组,字典,集合。列表不同于元组和字符串的地方:列表是可变的

  元组

  即不可变列表,用()括起来。

  有几种操作适用于所有序列,包括索引、切片、相加、相乘和成员资格检查。另外,Python还提供了一些内置函数,可用于确定序列的长度以及找出序列中最大和最小的元素。(迭代)

   序列通用操作

  1.索引

#字符串
first = 'hello,world!'
print(first[0])
print(first[-1])
>>>h
>>>-1

#列表
colour = ['red','white','blue','black']
print(colour[0])
print(colour[-1])
>>>red
>>>black

#元组
colour = ('red','white','blue','black')
print(colour[0])
print(colour[-1])
>>>red
>>>black

  2.切片

  除使用索引来访问单个元素外,还可以使用切片来访问特定范围内的元素:使用两个索引,用冒号分隔。

#字符串
numbers= '
print(numbers[0:3])
>>>123

#列表
numbers= [1,2,3,4,5,6,7,8,9]
print(numbers[0:3])
>>>[1, 2, 3]

#元组
numbers= (1,2,3,4,5,6,7,8,9)
print(numbers[0:3])
>>>(1, 2, 3)

  #使用来个索引来指定切片的边界,其中第一个索引指定的元素包含在切片内,但第二个索引指定的元素不包含在切片内。

  2.1切片的简写

  当想要访问序列中最后几个元素而又不知道其索引位置时,可以使用负数索引。以列表为例。

numbers= [1,2,3,4,5,6,7,8,9]
print(numbers[-3:-1])
print(numbers[-3:])
>>>[7, 8]
>>>[7, 8, 9]

  #第二个索引指定的元素不包含在切片内。

  如果切片始于序列开头,可省略第一个索引。

numbers= [1,2,3,4,5,6,7,8,9]
print(numbers[:3])
>>>[1, 2, 3]

  切片位于序列中间元素时

#序列中第3个元素到第4个元素
numbers= [1,2,3,4,5,6,7,8,9]
print(numbers[2:5])
>>>[3, 4, 5]

#序列中第3个元素到倒数第4个元素
numbers= [1,2,3,4,5,6,7,8,9]
print(numbers[2:-3])
>>>[3, 4, 5,6]

  2.2步长

  普通切片中,步长为1,意味着从一个元素移到下一个元素,指定步长时,将从起点和终点之间按照指定步长提取元素。

numbers= [1,2,3,4,5,6,7,8,9]
print(numbers[0:8:2]) #步长为2   可以简写为print(numbers[::2])
print(numbers[0:8:3]) #步长为3   可以简写为print(numbers[::3])
>>>[1, 3, 5, 7]
>>>[1, 4, 7]

  步长不能为0,但可以为负数,即从右向左提取元素。

numbers= [1,2,3,4,5,6,7,8,9]
print(numbers[8:0:-2])
>>>[9, 7, 5, 3]

  #切片也必须从右到左

  3.序列相加

a = 'hello'
b = 'world'
print(a+b)
>>>helloworld

x = [1,2,3]
y = [4,5,6]
print(x+y)
>>>[1, 2, 3, 4, 5, 6]

  #不同类型的序列不能相加

  4.乘法

a = 'hello'
print(a*5)
>>> hellohellohellohellohello

  5.成员资格

a = 'hello,world!'
print('h' in a)
print('x' in a)
>>>True
>>>False

  只有两种返回结果:True和False

  6.长度,最小值和最大值

  内置函数len返回序列包含的元素个数,min和max分别返回序列中最小和最大的元素。以列表为例。、

numbers = [45,8,126,78,3,17,5]
print(len(numbers))   #长度
print(min(numbers))   #最小值
print(max(numbers))   #最大值
>>>7
>>>3
>>>126

 

Python数据结构之序列及其操作的更多相关文章

  1. Python数据结构:序列(列表[]、元组())与映射(字典{})语法总结

    一.概述:Python中两种基本的数据结构是序列和映射,序列包含:可变的列表和不可变的元组:而当序列不够用时就出现了映射:字典.列表中的元素是可以变化的,元组里面的元素一旦初始化后就不可更改.列表和元 ...

  2. python数据结构(一)------序列

    数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合:在Python中,最基本的数据结构是序列(sequence),序列中的每个元素被分配一个序列号--即元素的位置,也称为索引. p ...

  3. Python中的序列操作

    官方手册:https://docs.python.org/3.7/library/stdtypes.html#sequence-types-list-tuple-range 序列简介 序列是指按照位置 ...

  4. 2017.7.12 Python的6种内建序列及操作

    数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构. 在Python中,最基本的数据结构是序列(sequence).序列中的 ...

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

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

  6. Python数据结构和类型--解压序列赋值多个变量

    Python数据结构和类型 1.1 解压序列赋值给多个变量 现在有一个包含N个元素的元组或者是序列,怎样将它里面的值解压后同时赋值给N个变量? 解决思路:先通过简单的解压赋值给多个变量,前提是变量的数 ...

  7. python中序列的操作

    Python中的序列操作 可变对象:列表.字典.集合 不可变对象:数值.字符串.元组.forzenset 1.序列的通用操作 (1)测试元素是否存在 x in S和x not in S,返回True或 ...

  8. python 列表与元组的操作简介

    上一篇:Python 序列通用操作介绍 列表 列表是可变的(mutable)--可以改变列表的内容,这不同于字符串和元组,字符串和元组都是不可变的.接下来讨论一下列表所提供的方法. list函数 可以 ...

  9. Python基础:序列(列表、元组)

    一.概述 列表(list)是由一个个 Python对象 组成的序列.其中,Python对象 可以是任何类型的对象,包括 Python标准类型(数值.字符串.列表.元组和字典)以及 用户自定义类型(类) ...

随机推荐

  1. Spring MVC的handlermapping之请求分发如何找到正确的Handler(RequestMappingHandlerMapping)

    这个思路同样是通过在AbstractHandlerMethodMapping里面来实现getHandlerInternal()实现自己的方法来处理寻找正确的处理器,不懂得请看上一篇. protecte ...

  2. Requests接口测试-对cookies的操作处理(一)

    大家都对cookie都不陌生,我们本篇文章使用requests结合cookie进行实例演示.我们使用一个接口项目地址,因为接口项目涉及到隐私问题,所以这里接口的地址我暂时不会给大家开放,但是我会给大家 ...

  3. UVa 11419 SAM I AM (最小覆盖数)

    题意:给定一个 n * m 的矩阵,有一些格子有目标,每次可以消灭一行或者一列,问你最少要几次才能完成. 析:把 行看成 X,把列看成是 Y,每个目标都连一条线,那么就是一个二分图的最小覆盖数,这个答 ...

  4. (连通图 缩点 强联通分支)Popular Cows -- poj --2186

    http://poj.org/problem?id=2186 Description Every cow's dream is to become the most popular cow in th ...

  5. Anti-Anti dylib(反 反-dylib钩子(Anti-tweak))

    版主提供了 anti dylib 的文章,http://bbs.chinapyg.com/thread-76158-1-1.html原理很简单,看下面源代码即可~  在Build Settings中找 ...

  6. Android-有序广播

    在之前的博客,Android-广播概念,中介绍了(广播和广播接收者)可以组件与组件之间进行通讯,有两种类型的广播(无序广播 和 有序广播),这篇博客就来讲解有序广播的代码实现: 有序广播:接收者 可以 ...

  7. Always on (HA 负载均衡 异地容灾 一体化 )

    Sqlserver 2012 开始,以往困扰我们的三个棘手问题:可扩展性.数据保护.异地容灾可以统一通过alwayson 来实现.2014  支持secondary 节点更是达到8个.在硬件调配方面比 ...

  8. Buffer Pool--SQL Server:Buffer Manager 对象

    --============================================================== --参考链接:http://technet.microsoft.com ...

  9. cesium编程入门(四)界面介绍及小控件隐藏

    感性认识 界面介绍,viewer Geocoder : 查找位置工具,查找到之后会将镜头对准找到的地址,默认使用bing地图 Home Button :视角返回初始位置. Scene Mode Pic ...

  10. 2-初步了解C#-类与对象

    本篇博客对应视频讲解 回顾 我们在第一篇文章中讲了编程中最基本的内容,如输入输出.字符串处理.数字类型计算.分支及循环结构等.无论学习什么语言,这些内容都是相通的. 本篇博客主要演示列表(List)的 ...