数据结构 数据结构基本上就是——它们是可以处理一些 数据 的 结构 。或者说,它们是用来存储一组相关数据的。 在Python中有三种内建的数据结构——列表、元组和字典。我们将会学习如何使用它们,以及它们如何使编程变得简单。 列表
列表中的项目应该包括在方括号中,这样Python就知道你是在指明一个列表。一旦你创建了一个列表,你可以添加、删除或是搜索列表中的项目。由于你可以增加或删除项目,我们说列表是 可变的 数据类型,即这种类型是可以被改变的。 列表是使用对象和类的一个例子。 类也有方法,即仅仅为类而定义地函数。仅仅在你有一个该类的对象的时候,你才可以使用这些功能。例如,Python为 类也有域,它是仅仅为类而定义的变量。仅仅在你有一个该类的对象的时候,你才可以使用这些变量/名称。类也通过点号使用,例如 >>> mylist=['apple','mango','banana'] >>> for i in mylist: print i apple mango banana >>> mylist.append('rice') >>> print mylist[3] rice >>> del mylist[1] 我们使用 >>> for i in mylist: print i apple banana rice >>> mylist.sort() 列表的 >>> for i in mylist: print i apple banana rice 如果你想要知道列表对象定义的所有方法,可以通过 >>> help(list) Help on class list in module __builtin__: 元组 元组和列表十分类似,只不过元组和字符串一样是 不可变的 即你不能修改元组。元组通过圆括号中用逗号分割的项目定义。 >>> zoo=('1','2','3') >>> new_zoo=(zoo,'4','5') >>> print len(new_zoo) 3 >>> print new_zoo (('1', '2', '3'), '4', '5') >>> print zoo[2] 3 >>> print new_zoo[0][1] 2 含有0个或1个项目的元组。一个空的元组由一对空的圆括号组成,如 元组最通常的用法是用在打印语句中,下面是一个例子: >>> name='michael' >>> age=12 >>> print '%s\'s age is %d'%(name,age) michael's age is 12
字典 字典类似于你通过联系人名字查找地址和联系人详细情况的地址簿,即,我们把键(名字)和值(详细情况)联系在一起。注意,键必须是唯一的,就像如果有两个人恰巧同名的话,你无法找到正确的信息。 注意,你只能使用不可变的对象(比如字符串)来作为字典的键 键值对在字典中以这样的方式标记: 字典是 >>> contact={'liu':'33','xue':'22','wang':'44'} >>> print "liu's age is",contact['liu'] liu's age is 33 >>> contact['li']='55' 添加一个键值对 >>> del contact['xue'] 删除一个键值对 >>> for name,age in contact.items(): 字典的 print "%s is %s"%(name,age) liu is 33 li is 55 wang is 44 我们可以使用 >>> if 'liu' in contact: print "liu is",contact['liu'] liu is 33 序列 列表、元组和字符串都是序列,但是序列是什么,它们为什么如此特别呢?序列的两个主要特点是索引操作符和切片操作符。索引操作符让我们可以从序列中抓取一个特定项目。切片操作符让我们能够获取序列的一个切片,即一部分序列。 索引同样可以是负数,在那样的情况下,位置是从序列尾开始计算的。因此, >>> shoplist=['apple','mango','carrot','banana'] >>> print shoplist[-1] banana >>> print shoplist[-2] carrot 切片操作符是序列名后跟一个方括号,方括号中有一对可选的数字,并用冒号分割。注意这与你使用的索引操作符十分相似。记住数是可选的,而冒号是必须的。 切片操作符中的第一个数(冒号之前)表示切片开始的位置,第二个数(冒号之后)表示切片到哪里结束。如果不指定第一个数,Python就从序列首开始。如果没有指定第二个数,则Python会停止在序列尾。注意,返回的序列从开始位置 开始 ,刚好在 结束 位置之前结束。即开始位置是包含在序列切片中的,而结束位置被排斥在切片外。 >>> print shoplist[:] ['apple', 'mango', 'carrot', 'banana'] >>> print shoplist[1:3] ['mango', 'carrot'] 你可以用负数做切片。负数用在从序列尾开始计算的位置。例如, >>> print shoplist[:-1] ['apple', 'mango', 'carrot'] 同样可以操作与字符串 >>> name='abcdefg' >>> print name[:-1] abcdef 参考 当你创建一个对象并给它赋一个变量的时候,这个变量仅仅 参考 那个对象,而不是表示这个对象本身!也就是说,变量名指向你计算机中存储那个对象的内存。这被称作名称到对象的绑定。 >>> a=[1,2,3,4] >>> b=a >>> del a[0] >>> print a [2, 3, 4] >>> print b [2, 3, 4] >>> b=a[:-1] 列表的赋值语句不创建拷贝。你得使用切片操作符来建立序列的拷贝。 >>> print b [2, 3] 更多字符串的内容 字符串也是对象,同样具有方法。这些方法可以完成包括检验一部分字符串和去除空格在内的各种工作。字符串都是 >>> str='abcdefgh' >>> if str.startswith('abc'): print 'yes' yes >>> if str.find('cd')!=-1: print 'yes' yes >>> if 'h' in str: print 'yes'
>>> delimiter='|' >>> list=['1','2','3','4'] >>> delimiter.join(list) '1|2|3|4' |
|