虽然不知道什么鬼,但是感觉蛮厉害的样子,于是我就开始学了。
切片操作是用来取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')