python

导航

python入门教程之数组切片

来源 :中华考试网 2020-12-08

  切片的基本格式是 array[startstep],表示对 array 在 start 到 end 之前以 step 为间隔取切片。注意这里的区间是 [start, end),也就是左闭右开。比如:

  s = 'hello'

  s[0:5:2]

  # 表示取 s 的第 0、2、4 个字符,结果是 'hlo'

  再举几个例子

  s[0:5] # 不写 step 默认就是 1,因此得到 'hello'

  s[1:] # 不写 end 默认到结尾,因此还是得到 'ello'

  s[n:] # 获取 s 的最后 len(s) - n 个元素

  s[:2] # 不写 start 默认从 0 开始,因此得到 'he'

  s[:n] # 获取 s 的前 n 个元素

  s[:-1] # 负数表示倒过来数,因此这会刨除最后一个字符,得到 'hell'

  s[-2:] # 同上,表示获取最后两个字符,得到 'lo'

  s[::-1] # 获取字符串的倒序排列,相当于 reverse 函数

  step 和它前面的冒号要么同时写,要么同时不写,但 start 和 end 之间的冒号不能省,否则就不是切片而是获取元素了。再次强调 array[start:end] 表示的区间是 [a, b),也许你会觉得这很难记,但同样的,这会得出以下美妙的公式:

  array[:n] + array[n:] = array (0 <= n <= len(array))

  用代码来表示就是:

  s = 'hello'

  s[:2] + s[2:] == s

  # True,因为 s[:2] 是 'he',s[2:] 是 'llo'

  切片不仅可以用来获取数组的一部分值,修改切片也可以直接修改数组的对应部分,比如:

  a = [1, 2, 3, 4, 5, 6]

  a[1:3] = [22, 33, 44]

  # a = [1, 22, 33, 44, 4, 5, 6]

  并没有人规定切片的新值必须和原来的长度一致:

  a = [1, 2, 3, 4, 5, 6]

  a[1:3] = [3]

  # a = [1, 3, 4, 5, 6]

  a[1:4] = []

  # a = [1, 6],相当于删除了中间的三个数字

  但切片的新值必须也是可迭代的对象,比如这样写是不合法的:

  a = [1, 2, 3, 4, 5, 6]

  a[1:3] = 3

  # TypeError: can only assign an iterable

如果你现在想学习python,赢取高薪工作机会,非常简单,填写下面信息,学好python技术高薪工作机会唾手可得。

分享到

您可能感兴趣的文章