数据结构之序列
序列
列表、元组和字符串都是序列,但是序列是什么,它们为什么如此特别呢?序列的两个主要特点是索引操作符和切⽚操作符。索引操作符让我们可以从序列中抓取⼀个特定项⽬。切⽚操作符让我们能够获取序列的⼀个切⽚,即⼀部分序列。
使⽤序列
例9.5 使⽤序列
#!/usr/bin/python
# Filename: seq.py
shoplist=['apple','mango','carrot','banana']
#Indexing or 'Subscription' operation
print'Item 0 is',shoplist[0]
print'Item 1 is',shoplist[1]
print'Item 2 is',shoplist[2]
print'Item 3 is',shoplist[3]
print'Item -1 is',shoplist[-1]
print'Item -2 is',shoplist[-2]
#Slicing on a list
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[:]
#Slicing on a string
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[:]
输出
[root@losnau python]# python seq.py
Item 0 is apple
Item 1 is mango
Item 2 is carrot
Item 3 is banana
Item -1 is banana
Item -2 is carrot
Item 1 to 3 is ['mango', 'carrot']
Item 2 to end is ['carrot', 'banana']
Item 1 to -1 is ['mango', 'carrot']
Item start to end is ['apple', 'mango', 'carrot', 'banana']
字符串是什么数据结构characters 1 to 3 is wa
characters 2 to end is aroop
characters 1 to -1 is waroo
characters start to end is swaroop
它如何⼯作
⾸先,我们来学习如何使⽤索引来取得序列中的单个项⽬。这也被称作是下标操作。每当你⽤⽅括号中的⼀个数来指定⼀个序列的时
候,Python会为你抓取序列中对应位置的项⽬。记住,Python从0开始计数。因此,shoplist[0]抓取第⼀个项⽬,shoplist[3]抓取shoplist序列中的第四个元素。
索引同样可以是负数,在那样的情况下,位置是从序列尾开始计算的。因此,shoplist[-1]表⽰序列的最后⼀个元素⽽shoplist[-2]抓取序列的倒数第⼆个项⽬。
切⽚操作符是序列名后跟⼀个⽅括号,⽅括号中有⼀对可选的数字,并⽤冒号分割。注意这与你使⽤的索引操作符⼗分相似。记住数是可选的,⽽冒号是必须的。
切⽚操作符中的第⼀个数(冒号之前)表⽰切⽚开始的位置,第⼆个数(冒号之后)表⽰切⽚到哪⾥结束。如果不指定第⼀个数,Python就从序列⾸开始。如果没有指定第⼆个数,则Python会停⽌在序列尾。注意,返回的序列从开始位置开始,刚好在结束位置之前结束。即开始位置是包含在序列切⽚中的,⽽结束位置被排斥在切⽚外。
这样,shoplist[1:3]返回从位置1开始,包括位置2,但是停⽌在位置3的⼀个序列切⽚,因此返回⼀个含有两个项⽬的切⽚。类似
地,shoplist[:]返回整个序列的拷贝。
你可以⽤负数做切⽚。负数⽤在从序列尾开始计算的位置。例如,shoplist[:-1]会返回除了最后⼀个项⽬外包含所有项⽬的序列切⽚。
使⽤Python解释器交互地尝试不同切⽚指定组合,即在提⽰符下你能够马上看到结果。序列的神奇之处在于你可以⽤相同的⽅法访问元组、列表和字符串。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论