python中有三种内建的数据结构:列表、元组和字典

list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目。在python中,每个项目之间用逗号分隔。

列表中的项目应该包括在方括号中,这样python就知道你是在指明一个列表。一旦你创建了一个列表,可以添加、删除或者搜索列表中的项目。

列表是可变的数据类型,这种类型是可以被改变的。

python为list类提供了append方法,让你在列表尾添加一个项目。

如mylist.append('an item')列表mylist中增加那个字符串。注意使用点号来使用对象的方法。

#!/usr/bin/python
#Filename:using_list.py #This is my shopping list
shoplist=['apple','mango','carrot','banana']
print 'I have',len(shoplist),'items to purchase.' print 'These items are:',
for item in shoplist:
print item, print '\nI also have to buy rice.'
shoplist.append('rice')
print 'My shopping list is now',shoplist print 'I will sort my list now'
shoplist.sort()
print 'sorted shopping list is',shoplist print 'The first item T will buy is',shoplist[]
olditem=shoplist[]
del shoplist[]
print 'I bought the',olditem
print 'My shopping list is now',shoplist

结果:

I have  items to purchase.
These items are: apple mango carrot banana
I also have to buy rice.
My shopping list is now ['apple', 'mango', 'carrot', 'banana', 'rice']
I will sort my list now
Sorted shopping list is ['apple', 'banana', 'carrot', 'mango', 'rice']
The first item I will buy is apple
I bought the apple
My shopping list is now ['banana', 'carrot', 'mango', 'rice']

shoplist是购物列表,在shoplist列表中可以添加任何种类的对象包括数甚至其他列表。

我们使用列表的sort方法来对列表排序。注意:这个方法影响列表本身,而不是返回一个修改后的列表。(列表可变而字符串是不可变的)

元组

元组和列表十分类似。只不过元组和字符串一样是不可变的,即你不能修改元组

元组通过圆括号中用逗号分隔的项目定义。元组的值不会改变

zoo = ('wolf','elephant','penguin')
print 'Number of animals in the zoo is',len(zoo) new_zoo = ('monkey','dolphin',zoo)
print 'Number of animals in the new zoo is',len(new_zoo)
print 'All animals in new zoo are',new_zoo
print 'Animals brought from old zoo are',new_zoo[]
print 'Last animal brought from old zoo is',new_zoo[][]

输出结果:

Number of animals in the zoo is
Number of animals in the new zoo is
All animals in new zoo are ('monkey', 'dolphin', ('wolf', 'elephant', 'penguin'))
Animals brought from old zoo are ('wolf', 'elephant', 'penguin')
Last animal brought from old zoo is penguin

len函数可以用来获取元组的长度。

通过一对方括号来指明某个项目的位置来访问元组中的项目,称为索引运算符,

含有0个或1个项目的元组,空的元组由一对空的圆括号组成,如myempty=()

含有单个元素的元组:你必须在第一个(唯一一个)项目后跟一个逗号,python才能区分元组和表达式中一个带圆括号的对象。如singleton=(2,)。

列表之中的列表不会失去它的身份,同样元组中的元组,或列表中的元组,他们就是使用一个对象存储的对象。

元组与打印语句

age =
name = 'Swaroop' print '%s is %d years old'%(name,age)
print 'why is %s playing with that python?'%name

print语句可以使用跟着%符号的项目元组的字符串。这些字符串具备定制的功能。

定制可以是%s表示字符串或%d表示整数。

在第二个print语句中,我们使用了一个定制,,后面跟着%符号后的单个项目----没有圆括号。这只在字符串中只有一个定制的时候有效

字典

字典类似于你通过联系人名字查找地址和联系人详细情况的地址簿。我们把键(名字)值(详细情况)联系在一起。

注意:键必须唯一。

   只能使用不可变的对象(比如字符串)来作为字典的,可以把不可变或可变的对象作为字典的

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

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

字典是dict类的实例/对象

#'ab' is short for 'a' ddress 'b' ook
ab={'Swaroop':'swaroopch@byteofpython.info',
'Larry':'larry@wall.org',
'Matsumoto':'matz@ruby-lang.org',
'Spammer':'spammer@hotmial.com'
}
print "Swaroop's address is %s"%ab['Swaroop'] ab['Guido']='guido@python.org' del ab['Spammer']
print '\nThere are %d contacts in the address-book\n'%len(ab)
for name,address in ab.items():
print 'Contact %s at %s' %(name,address) if 'Guido' in ab:
print "\nGuido's address is %s"%ab['Guido']

序列

列表、元组和字符串都是序列,序列的两个主要特点是索引操作符和切片操作符

切片操作符:让我们获取序列的一个切片,即一部分序列。

shoplist = ['apple','mango','carrot','banana']
print "Item 0 is",shoplist[]
print "Item 1 is",shoplist[]
print "Item 2 is",shoplist[]
print "Item 3 is",shoplist[]
print "Item -1 is",shoplist[-]
print "Item -2 is",shoplist[-] print "Item 1 to 3 is",shoplist[:]
print "Item 2 to end is",shoplist[:]
print "Item 1 to -1 is",shoplist[:-]
print "Item start to end is",shoplist[:] name = 'swaroop'
print 'characters 1 to 3 is',name[:]
print 'characters 2 to end is',name[:]
print 'characters 1 to -1 is',name[:-]
print 'characters start to end is',name[:]

结果:

Item  is apple
Item is mango
Item is carrot
Item is banana
Item - is banana
Item - is carrot
Item to is ['mango', 'carrot']
Item to end is ['carrot', 'banana']
Item to - is ['mango', 'carrot']
Item start to end is ['apple', 'mango', 'carrot', 'banana']
characters to is wa
characters to end is aroop
characters to - is waroo
characters start to end is swaroop

使用索引来取得序列中的单个项目,例如shoplist[1]

索引同样可以是负数,位置从序列尾开始计算的。因此shoplist[-1]表示序列的最后一个。

切片操作符是序列名后跟一个方括号,方括号中有一对可选的数字,并且冒号分隔。记住数时可选的,而冒号是必须的。

切片操作符的第一个数(冒号前)表示切片开始的位置,第二个数(冒号后)表示切片到哪里结束。

不指明第一个数,python就从序列首开始,不指明第二数,python会停止在序列尾。

注意返回的序列从开始的位置开始,在结束位置之前结束。即开始位置是包含在序列切片中的,而结束位置被排斥在切片外。

简明python教程五----数据结构的更多相关文章

  1. 简明python教程五----数据结构(下)

    引用 当你创建一个对象并给它赋一个变量的时候,这个变量仅仅引用那个对象,而不是表示这个对象本身!即,变量名指向你计算机中存储那个对象的内存. print 'Simple Assignment' sho ...

  2. 《简明python教程》笔记一

    读<简明Python教程>笔记: 本书的官方网站是www.byteofpython.info  安装就不说了,网上很多,这里就记录下我在安装时的问题,首先到python官网下载,选好安装路 ...

  3. (原+转)简明 Python 教程:总结

     简明 Python 教程 说明:本文只是对<简明Python教程>的一个总结.请搜索该书查看真正的教程. 第3章 最初的步骤 1. Python是大小写敏感的. 2. 在#符号右面的内容 ...

  4. 笔记|《简明Python教程》:编程小白的第一本python入门书

    <简明Python教程>这本书是初级的Python入门教材,初级内容基本覆盖,对高级内容没有做深入纠结.适合刚接触Python的新手,行文比较简洁轻松,读起来也比较顺畅. 下面是我根据各个 ...

  5. 《简明Python教程》学习笔记

    <简明Python教程>是网上比较好的一个Python入门级教程,尽管版本比较老旧,但是其中的基本讲解还是很有实力的. Ch2–安装Python:下载安装完成后,在系统的环境变量里,在Pa ...

  6. 简明Python教程自学笔记——命令行通讯录

    [前言]学习Python已经有一段时间了,相关的书籍资料也下载了不少,但是没有一本完整的看完,也没有编出一个完整的程序.今天下午比较清闲就把<简明Python教程>看了一遍,然后根据书里面 ...

  7. 【转】简明 Python 教程

    原文网址:http://woodpecker.org.cn/abyteofpython_cn/chinese/ 简明 Python 教程Swaroop, C. H. 著沈洁元  译www.byteof ...

  8. python读书笔记-《简明python教程》上

    1月15日 <简明python教程>上 基本结构: 基础概念+控制流+函数+模块+数据结构+面向对象+I/O+异常+标准库+其他   1.概念 1-0    退出python linux: ...

  9. 学习笔记《简明python教程》

    学习笔记<简明python教程> 体会:言简意赅,很适合新手入门 2018年3月14日21:45:59 1.global 语句 在不使用 global 语句的情况下,不可能为一个定义于函数 ...

随机推荐

  1. (译)Getting Started——1.1.2 Basic(基础)

    本节教程会带你浏览创建简单的用户界面.添加自定义行为的整个过程.完成本节教程后,你创建的应用就可以运行在iPhone和iPad上了. 本节教程会教给你如下技能: 1. 使用Xcode创建和管理项目 2 ...

  2. IDEA2017 导入 SVN上的 Myeclipse或Eclipse 项目

    从SVN上检出项目,不用打开. 关闭IDEA后选择 import project,导入后按F4 (改成eclipse按键模式后 按ctrl alt shift F4)进入 project struct ...

  3. UVALive 7712 Confusing Manuscript 字典树 查询与s的编辑距离为1的字符串数量

    /** 题目:UVALive 7712 Confusing Manuscript 链接:https://vjudge.net/problem/UVALive-7712 题意:给定n个不同的字符串,f( ...

  4. Expectation Maximization(EM)算法note

    EM算法,之前上模式识别课上,推导过,在<统计学习方法>中没耐性的看过几次,个人感觉讲的过于理论,当时没怎么看懂,后来学lda,想要自己实现一下em算法,又忘记了,看来还是学的不够仔细,认 ...

  5. ashx一般处理程序

    说明:    虽然通过标准的方式可以创建处理程序,但是实现的步骤比较复杂,为了方便网站开发中对处理程序的应用,从Asp.net 2.0开始,asp.net提供了称为一般处理程序的处理程序,允许我们使用 ...

  6. 出售 unity3d串口插件

    出售unity3d串口插件 利用C++编写,解决了mono库 serialport的bug. serialport串口的bug地方在于: 1.有一些数据无法收到. 2.会丢失第一个字节. 3.延迟 我 ...

  7. LigerTree的使用

    效果图: 页面: <div id="divs" style="width: 310px; overflow-x: hidden; overflow-y: hidde ...

  8. redis php 实例一

    下面的例子都是基于php-redis这个扩展的. 1,connect 描述:实例连接到一个Redis. 参数:host: string,port: int 返回值:BOOL 成功返回:TRUE;失败返 ...

  9. mui 子页面切换父页面底部导航

    在父页面中新增方法: function switchTab(tab){ plus.webview.hide(activeTab); activeTab= tab; plus.webview.show( ...

  10. MAMP下配置虚拟主机域名

    第一步:修改虚拟主机地址: /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf 第二步: