Python第六堂笔记--切片

96
六个周 Excellent
0.6 2019.01.09 21:58 字数 491

一、对list进行切片


L = ['Adam', 'Lisa', 'Bart', 'Paul'],对于List进行操作,取前三个元素:

>>> [L[0],L[1],L[2]]
['Adam', 'Lisa', 'Bart']

取前N个元素,也就是索引为0-(N-1)的元素,可以用循环:

>>> r = []
>>> n = 3
>>> for i in range(n):
...     r.append(L[i])
... 
>>> r
['Adam', 'Lisa', 'Bart']

对这种经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作。
对应上面的问题,取前3个元素,用一行代码就可以完成切片:

# L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3.
>>> L[0:3]
# 如果第一个索引是0,还可以省略:
>>> L[1:3]
# 只用一个 : ,表示从头到尾:(因此,L[:]实际上复制出了一个新list。)
>>> L[:]
# 切片操作还可以指定第三个参数:第三个参数表示每N个取一个
>>> L[::2]

任务
range()函数可以创建一个数列:
>>> range(1, 101)
[1, 2, 3, ..., 100]
请利用切片,取出:
1.前10个数;
2.3的倍数;
3.不大于50的5的倍数。

二、倒序切片


对于list,既然Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片

任务
利用倒序切片对 1 - 100 的数列取出:

  • 最后10个数;
  • 最后10个5的倍数。

三、对字符串进行切片


字符串 'xxx'和 Unicode字符串 u'xxx'也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串
在很多编程语言中,针对字符串提供了很多各种截取函数,其实目的就是对字符串切片。Python没有针对字符串的截取函数,只需要切片一个操作就可以完成,非常简单。

字符串有个方法 upper() 可以把字符变成大写字母:
>>> 'abc'.upper()
'ABC'
但它会把所有字母都变成大写。请设计一个函数,它接受一个字符串,然后返回一个仅首字母变成大写的字符串。
提示:利用切片操作简化字符串操作。

Python
Web note ad 1