Python(九)切片

虽然不知道什么鬼,但是感觉蛮厉害的样子,于是我就开始学了。
切片操作是用来取list的前N个元素,当然我们可以用循环来实现这个操作

def qu(l,num):
    x=0
    L2=[]
    while x<num:    
         L2.insert(x,L[x]) 
         x=x+1
    return L2     
L3=qu(['a','b','c','d'], 2)
#取出前两个数
print(L3)

OR

 r = []
 n = 3
 for i in range(n):
     r.append(L[i])

切片(Slice)操作符,能大大简化这种操作
PS:(^__^) 嘻嘻,nbnb.

L[0:3]
['Adam', 'Lisa', 'Bart']
#如果是从0开始取,0可以省略 也就是L[:3],L[:]表示从头到尾
L[::2]
['Adam', 'Bart']

第三个参数表示每N个取一个,上面的 L[::2] 会每两个元素取出一个来,也就是隔一个取一个。
把list换成tuple,切片操作完全相同,只是切片的结果也变成了tuple。

任务
range()函数可以创建一个数列:

>>> range(1, 101)
[1, 2, 3, ..., 100]

请利用切片,取出:
1. 前10个数;
2. 3的倍数;
3. 不大于50的5的倍数。

L = range(1, 101)
print( L[1:11])
print( L[2:3])
print( L[4:50:5])
输出:
range(1, 11)
range(3, 4)
range(5, 51, 5)
#不知道是什么鬼····

查了一下,python3取消了range,同时将xrange重新命名成range,如果希望像py2一样可以打印出来整个结构需要list(range(…))

L = range(1, 101)
print( list(L[:10]))
print( list(L[2::3]))
print( list(L[4:50:5]))
输出
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
[5, 10, 15, 20, 25, 30, 35, 40, 45, 50]

倒序切片

>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']

>>> L[-2:]
['Bart', 'Paul']

>>> L[:-2]
['Adam', 'Lisa']

>>> L[-3:-1]
['Lisa', 'Bart']

>>> L[-4:-1:2]
['Adam', 'Bart']

倒序切片包含起始索引,不包含结束索引。

任务
利用倒序切片对 1 - 100 的数列取出:
* 最后10个数;
* 最后10个5的倍数。

L = range(1, 101)
print L[-10:]
print L[-46::5]

字符串切片

>>> 'ABCDEFG'[:3]
'ABC'
>>> 'ABCDEFG'[-3:]
'EFG'
>>> 'ABCDEFG'[::2]
'ACEG'

任务
字符串有个方法 upper() 可以把字符变成大写字母:

 'abc'.upper()
 >>>'ABC'

但它会把所有字母都变成大写。请设计一个函数,它接受一个字符串,然后返回一个仅首字母变成大写的字符串。
取除首字母外的字符串用[1:]
参考代码:

def firstCharUpper(s):
    return s[0].upper() + s[1:]
print firstCharUpper('hello')
print firstCharUpper('sunday')
print firstCharUpper('september')

猜你喜欢

转载自blog.csdn.net/wo164683812/article/details/80220253