简介

数据结构基本上就是--它们是可以处理一些数据的结构。或者说,它们是用来存储一组相关数据的。在Python里面有三种内建的数据结构--列表、元组和字典。

一、列表

list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目。假象你有一个购物列表,上面记载着你想买的东西,就容易理解列表了。只不过在你的购物列表上,可能每样东西都独自占有一行,而在Python中,你在每个项目之间用逗号分隔。

列表中的项目应该包含在方括号中,这样Python就知道你在指明一个列表。一旦你创建一个列表,你可以添加、删除或是搜索列表中的项目。由于你可以添加或删除项目,我们说列表是可变的数据类型,即这种类型是可以被改变的。

#this is my shoping list
shoplist = ['apple','mango','carrot','banana']
print('i have',len(shoplist),'items to purchase')
print('These items are'),
for item in shoplist:
print(item) 结果:
i have 4 items to purchase
These items are
apple
mango
carrot
banana Process finished with exit code 0

二、元组

元组和列表十分类似,只不过元组和字符串一样是不可变的即你不可以修改元组。元组通过圆括号中用逗号分隔的项目定义。元组通常用在使语句或用户定义的函数能够安全的采用一组值得时候,即被使用的元组的值不会改变。

zoo = ('wolf','elephant','penguin')
print('Number of animals in the zoo is',len(zoo)) new_zoo = ('monkey','dolphin',zoo)
print('Number of anmials in the new zoo is',len(new_zoo))
print('All anmials in the new zoo are',new_zoo)
print('A anmials brought from old zoo are',new_zoo[2])
print('Last anmial brought form old zoo is',new_zoo[2][2]) 结果:
Number of animals in the zoo is 3
Number of anmials in the new zoo is 3
All anmials in the new zoo are ('monkey', 'dolphin', ('wolf', 'elephant', 'penguin'))
A anmials brought from old zoo are ('wolf', 'elephant', 'penguin')
Last anmial brought form old zoo is penguin

三、字典

字典类似于你通过联系人名字查找地址和联系人详细情况的地址簿,即,我们把键(名字)和值(详细情况)联系在一起。注意,键必须是唯一的,就像是如果有两个人恰巧同名的话,你无法找到正确信息。

注意,你只能使用不可变的对象(比如字符串)来作为字典的键,但是你可以把不可变或可变的对象作为字典的值。基本说来就是,你应该只使用简单的对象作为键。

键值在字典中以这样的方式标记:d = {key1 : value1,key2 : value2}。注意它们的键/值对用冒号分割,而各个对应用逗号分割,所有这些都包括在花括号内。

记住字典的键/值对是没有顺序的。如果你想要一个特定的顺序,那么你应该在使用它们之前对它们排序。

ab = {
'Swaroop' : 'cairui@11.com',
'Larry' : 'Larry@wall.com',
'Matsumoto' : 'matz@qq.com',
'Spamma' : 'spamma@qq.com' }
print('Swaroop address is',ab['Swaroop'])
print('Larry address is',ab['Larry']) 结果:
Swaroop address is cairui@11.com
Larry address is Larry@wall.com

四、序列

序列有两个主要特点是索引操作符和切片操作符。索引操作符让我们可以从序列中抓取一个特定项目。切片操作符让我们能够获取序列的一个切片,即一部分序列。

shoplist = ['apple','mango','carrot','banana']

print('Item0 is',shoplist[0])
print('Item1 is',shoplist[1])
print('Item3 is',shoplist[3])
print('Item-1 is',shoplist[-1]) print('Item 1 to 3 is',shoplist[1:3]) 结果:
Item0 is apple
Item1 is mango
Item3 is banana
Item-1 is banana
Item 1 to 3 is ['mango', 'carrot']

五、引用

当你创建一个对象并给它附一个变量的时候,这个变量仅仅引用那个对象,而不是表示这个对象本身!也就是说,变量名指向你计算机中存储那个对象的内存。这被称作名称到对象的绑定。

Python之‘数据结构’的更多相关文章

  1. python 与数据结构

    在上面的文章中,我写了python中的一些特性,主要是简单为主,主要是因为一些其他复杂的东西可以通过简单的知识演变而来,比如装饰器还可以带参数,可以使用装饰类,在类中不同的方法中调用,不想写的太复杂, ...

  2. [0x00 用Python讲解数据结构与算法] 概览

    自从工作后就没什么时间更新博客了,最近抽空学了点Python,觉得Python真的是很强大呀.想来在大学中没有学好数据结构和算法,自己的意志力一直不够坚定,这次想好好看一本书,认真把基本的数据结构和算 ...

  3. Python -- 堆数据结构 heapq - I love this game! - 博客频道 - CSDN.NET

    Python -- 堆数据结构 heapq - I love this game! - 博客频道 - CSDN.NET Python -- 堆数据结构 heapq 分类: Python 2012-09 ...

  4. python实现数据结构单链表

    #python实现数据结构单链表 # -*- coding: utf-8 -*- class Node(object): """节点""" ...

  5. 《用Python解决数据结构与算法问题》在线阅读

    源于经典 数据结构作为计算机从业人员的必备基础,Java, c 之类的语言有很多这方面的书籍,Python 相对较少, 其中比较著名的一本 problem-solving-with-algorithm ...

  6. 用Python实现数据结构之二叉搜索树

    二叉搜索树 二叉搜索树是一种特殊的二叉树,它的特点是: 对于任意一个节点p,存储在p的左子树的中的所有节点中的值都小于p中的值 对于任意一个节点p,存储在p的右子树的中的所有节点中的值都大于p中的值 ...

  7. (python数据分析)第03章 Python的数据结构、函数和文件

    本章讨论Python的内置功能,这些功能本书会用到很多.虽然扩展库,比如pandas和Numpy,使处理大数据集很方便,但它们是和Python的内置数据处理工具一同使用的. 我们会从Python最基础 ...

  8. python的数据结构分类,以及数字的处理函数,类型判断

    python的数据结构分类: 数值型 int:python3中都是长整形,没有大小限制,受限内存区域的大小 float:只有双精度型 complex:实数和虚数部分都是浮点型,1+1.2J bool: ...

  9. Python 基本数据结构

    Python基本数据结构 数据结构:通俗点儿说,就是存储数据的容器.这里主要介绍Python的4种基本数据结构:列表.元组.字典.集合: 格式如下: 列表:list = [val1, val2, va ...

  10. 转 Python常见数据结构整理

    http://www.cnblogs.com/jeffwongishandsome/archive/2012/08/05/2623660.html Python常见数据结构整理 Python中常见的数 ...

随机推荐

  1. Mybatis多参数查询映射

    一.单个参数: public List<XXBean> getXXBeanList(String xxCode); <select id="getXXXBeanList&q ...

  2. Oracle OCP提纲

    ocp提纲 Oracle SQL 基础 ◆ 标准SQL语言介绍◆ Oracle数据库数据组织形式◆ DDL语句创建表及修改表结构◆ Select语句检索和限制表中数据◆ 从多表中检索数据(连接查询)◆ ...

  3. hadoop再次集群搭建(3)-如何选择相应的hadoop版本

    之前接触过很多很多hadoop版本,现在重新搭建平台,面临选择哪个版本的问题. 当我们决定是否采用某个软件用于开源环境时,通常需要考虑以下几个因素: (1)是否为开源软件,即是否免费. (2) 是否有 ...

  4. android-auto-scroll-view-pager (无限广告轮播图)

    github 地址: https://github.com/Trinea/android-auto-scroll-view-pager Gradle: compile ('cn.trinea.andr ...

  5. HTML5的头部、拨号、短信、邮件(转)

    HTML5[语法要点] 一.头部设置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 <!--页面窗口自动调整到设备 ...

  6. require()和include()代码重用

    第五章 require()函数和include()函数几乎是相同的,二者唯一的区别在于函数失败后,require()函数将给出一个致命的错误,而include()只是给出一个警告. require_o ...

  7. Spring2 看1

    Spring部分 1.谈谈你对spring IOC和DI的理解,它们有什么区别? IoC Inverse of Control 反转控制的概念,就是将原本在程序中手动创建UserService对象的控 ...

  8. noi.ac day6t3 color

    传送门 分析 将询问离线,枚举右端点.新加入一个右端点i时,假设离i第t近的同色位置为p,t+1近的是q,则当i是右端点时,(q,p]的点可以作为左端点. 注意对于一个点离它第t近的同色点可以用队列维 ...

  9. poj3171 Cleaning Shifts

    传送门 题目大意 有一个大区间和n个小区间,每个小区间都有一个代价,求最少付出多少代价可以使得小区间完全覆盖大区间. 分析为了方便起见我们先将s变为2,其它的位置都对应更改以便后期处理.我们考虑以t1 ...

  10. 移动应用中的AR开发,5款最受欢迎工具推荐!

      英文原文:Top 5 Tools for Augmented Reality in Mobile Apps 还记得前段时间在网上很火的 3D 小熊不?托它的福,为相当一部分人科普了增强现实(AR) ...