Python 数据结构小结

1 列表 list

列表是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目。列表是可变的数据类型,可以对列表进行添加,删除或者搜索其中的项目。

# 创建列表
shoplist = ['apple', 'mango', 'carrot', 'banana']

# 获取列表长度
len(shoplist)

# 遍历列表
for item in shoplist: print item

# 增加一个项目
shoplist.append('rice')

# 排序,这个方法影响列表本身
shoplist.sort()

# 获取列表中的项目
shoplist[0]

# 删除列表中的项目
del shoplist[0]

列表也是一个序列,可以在列表中添加任何种类的对象包括数甚至其他列表。如果想要知道列表对象定义的所有方法,可以通过help(list)获得完整的知识。

2 元组

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

# 声明一个元组
zoo = ('wolf', 'elephant', 'penguin')

# 获取元组长度
len(zoo)

# 元组中的项目任意指定
new_zoo = ('monkey', 'dolphin', zoo)

# 获取多维元组中的项目
new_zoo[2][2]

# 使用元组输出%s定制
age = 22
name = 'Swaroop'
print '%s is %d years old' % (name, age)
print 'Why is %s playing with that python?' % name

我们看到len函数可以用来获取元组的长度。这也表明元组也是一个序列。可以通过一对方括号来指明某个项目的位置从而来访问元组中的项目,就像我们对列表的用法一样。这被称作索引运算符。含有0个或1个项目的元组:一个空的元组由一对空的圆括号组成,如myempty = ()。然而,含有单个元素的元组必须在第一个(唯一一个)项目后跟一个逗号,这样Python才能区分元组和表达式中一个带圆括号的对象。例如singleton = (2 , )。


3 字典

字典把键(名字)和值(详细情况)联系在一起,键值必须是唯一的。只能使用不可变的对象(比如字符串)来作为字典的键,但是你可以不可变或可变的对象作为字典的值。字典是dict类的实例/对象。

# 创建一个字典
ab = {
          'Swaroop'   : 'swaroopch@byteofpython.info',
          'Larry'     : 'larry@wall.org',
          'Matsumoto' : 'matz@ruby-lang.org',
          'Spammer'   : 'spammer@hotmail.com'
     }

# 获取字典中的值
ab['Swaroop']

# 添加一个键值对
ab['Guido'] = 'guido@python.org'

# 删除一个键值对
del ab['Spammer']

# 获取字典长度
len(ab)

# 遍历字典,这里是对
for name, address in ab.items():
    print 'Contact %s at %s' % (name, address)

# 判断
if 'Guido' in ab: # OR ab.has_key('Guido')
    print "\nGuido's address is %s" % ab['Guido']

字典的items方法会返回一个元组的列表,其中每个元组都包含一对项目——键与对应的值。使用in操作符来检验一个键/值对是否存在,或者使用dict类的has_key方法。你可以使用help(dict)来查看dict类的完整方法列表。


4 序列

列表、元组和字符串都是序列,序列的连个主要特点是索引操作符和切片操作符,索引操作符可以让我们从序列中抓取一个特定项目,切片操作符可以使我们能够获取序列的一个切片,即一部分序列。

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

name = 'swaroop'
print 'characters 1 to 3 is', name[1:3]
print 'characters 2 to end is', name[2:]
print 'characters 1 to -1 is', name[1:-1]
print 'characters start to end is', name[:]

索引(下标操作)可以是负数,在那样的情况下,位置是从序列尾开始计算的。因此,shoplist[-1]表示序列的最后一个元素而shoplist[-2]抓取序列的倒数第二个项目。切片操作符是序列名后跟一个方括号,方括号中有一对可选的数字,并用冒号分割。数是可选的,而冒号是必须的。
切片操作符中的第一个数(冒号之前)表示切片开始的位置,第二个数(冒号之后)表示切片到哪里结束。如果不指定第一个数,Python就从序列首开始。如果没有指定第二个数,则Python会停止在序列尾。
序列的神奇之处在于你可以用相同的方法访问元组、列表和字符串。



5 参考

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

shoplist = ['apple', 'mango', 'carrot', 'banana']
mylist = shoplist # mylist is just another name pointing to the same object!

del shoplist[0]

print 'shoplist is', shoplist
print 'mylist is', mylist
# notice that both shoplist and mylist both print the same list without
# the 'apple' confirming that they point to the same object

print 'Copy by making a full slice'
mylist = shoplist[:] # make a copy by doing a full slice
del mylist[0] # remove first item

print 'shoplist is', shoplist
print 'mylist is', mylist
# notice that now the two lists are different


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值