序列_Sequence

快来打我* 2021-12-13 04:46 400阅读 0赞

列表、元组和字符串可以看作序列(Sequence) 的某种表现形式

序列的主要功能是资格测试(Membership Test) (也就是 innot in 表达式) 和索引操作(Indexing Operations) ,它们能够允许我们直接获取序列中的特定项目。

上面所提到的序列的三种形态——列表、元组与字符串,同样拥有一种切片(Slicing) 运算符,它能够允许我们序列中的某段切片——也就是序列之中的一部分。

案例(保存为 ds_seq.py ) :

  1. # 序列(Sequence)
  2. shoplist = ['apple','mango','carrot','banana']
  3. name = 'swaroop'
  4. # Indexing or 'Subscription' operation #
  5. # 索引或“下标(Subscription) ”操作符 #
  6. print('Item 0 is', shoplist[0])
  7. print('Item 1 is', shoplist[1])
  8. print('Item 2 is', shoplist[2])
  9. print('Item 3 is', shoplist[3])
  10. print('Item -1 is', shoplist[-1])
  11. print('Item -2 is', shoplist[-2])
  12. print('Character 0 is', name[0])
  13. # Slicing on a list #
  14. print('Item 1 to 3 is', shoplist[1:3])
  15. print('Item 2 to end is', shoplist[2:])
  16. print('Item 1 to -1 is', shoplist[1:-1])
  17. print('Item start to end is', shoplist[:])
  18. # 从某一字符串中切片 #
  19. print('characters 1 to 3 is', name[1:3])
  20. print('characters 2 to end is', name[2:])
  21. print('characters 1 to -1 is', name[1:-1])
  22. print('characters start to end is', name[:])

输出

  1. $ python ds_seq.py
  2. Item 0 is apple
  3. Item 1 is mango
  4. Item 2 is carrot
  5. Item 3 is banana
  6. Item -1 is banana
  7. Item -2 is carrot
  8. Character 0 is s
  9. Item 1 to 3 is ['mango', 'carrot']
  10. Item 2 to end is ['carrot', 'banana']
  11. Item 1 to -1 is ['mango', 'carrot']
  12. Item start to end is ['apple', 'mango', 'carrot', 'banana']
  13. characters 1 to 3 is wa
  14. characters 2 to end is aroop
  15. characters 1 to -1 is waroo
  16. characters start to end is swaroop

它是如何工作的

Python 从 0 开始计数。因此 shoplist[0]将获得 shoplist 序列中的第一个项目,而 shoplist[3]将获得第四个项目。

索引操作也可以使用负数,在这种情况下,位置计数将从队列的末尾开始。因此, shoplist[-1] 指的是序列的最后一个项目, shoplist[-2]将获取序列中倒数第二个项目。

在切片操作中,第一个数字(冒号前面的那位) 指的是切片开始的位置,第二个数字(冒号后面的那位) 指的是切片结束的位置。如果第一位数字没有指定,Python 将会从序列的起始处开始操作。如果第二个数字留空,Python 将会在序列的末尾结束操作。要注意的是切片操作会在开始处返回 start,并在 end 前面的位置结束工作。也就是说,序列切片将包括起始位置,但不包括结束位置

因此, shoplist[1:3]返回的序列的一组切片将从位置 1 开始,包含位置 2 并在位置 3 时结束,因此,这块切片返回的是两个项目。类似地, shoplist[:]返回的是整个序列。

你同样可以在切片操作中使用负数位置。使用负数时位置将从序列末端开始计算。例如,shoplist[:-1]强返回一组序列切片,其中不包括序列的最后一项项目,但其它所有项目都包含其中。

步长

你同样可以在切片操作中提供第三个参数,这一参数将被视为切片的步长(Step) (在默认情况下,步长大小为 1) :

  1. >>> shoplist = ['apple', 'mango', 'carrot', 'banana']
  2. >>> shoplist[::1]
  3. ['apple', 'mango', 'carrot', 'banana']
  4. >>> shoplist[::2]
  5. ['apple', 'carrot']
  6. >>> shoplist[::3]
  7. ['apple', 'banana']
  8. >>> shoplist[::-1]
  9. ['banana', 'carrot', 'mango', 'apple']

你会注意到当步长为 2 时,我们得到的是第 0、2、4…… 位项目。当步长为 3 时,我们得到的是第 0、3……位项目。

发表评论

表情:
评论列表 (有 0 条评论,400人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Oracle 序列sequence

    一、什么是序列? 是数据库对象一种。多个用户可以通过序列生成连续的数字以此来实现主键字段的自动、唯一增长,并且一个序列可为多列、多表同时使用。 二、序列语法:

    相关 oracle导出序列sequence

    序列(sequence)是数据库不可分割的一部分,可是,oracle中,好像不能指定导出sequence的? 可以在备份中顺带导出,然后还原中顺带导入这个序列号,但只操作序列

    相关 序列_Sequence

    列表、元组和字符串可以看作序列(Sequence) 的某种表现形式 序列的主要功能是`资格测试(Membership Test)` (也就是 `in` 与 `not in`