1、对list切片

取一个list的部分元素是非常常见的操作。

例:

>>>L = ['Adam', 'Lisa', 'Bart', 'Paul']
#取前3个元素
>>>L[0:3]

L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。如果第一个索引是0,还可以省略:L[:3]

L[:]表示从头取到尾。L[::2]第三个参数表示每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[:10]
print L[2::3]
print L[4:50:5]

2、倒序切片

>>> 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[4::5][-10:]

3、对字符串切片

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

任务:

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

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

但它会把所有字母都变成大写。请设计一个函数,它接受一个字符串,然后返回一个仅首字母变成大写的字符串。

提示:利用切片操作简化字符串操作。

def firstCharUpper(s):
    return s[0].upper()+s[1:]

print firstCharUpper('hello')
print firstCharUpper('sunday')
print firstCharUpper('september')

4、迭代:

在Python中,如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Iteration)。

因为 Python 的 for循环不仅可以用在list或tuple上,还可以作用在其他任何可迭代对象上。

因此,迭代操作就是对于一个集合,无论该集合是有序还是无序,我们用 for 循环总是可以依次取出集合的每一个元素。

注意: 集合是指包含一组元素的数据结构,我们已经介绍的包括:
1. 有序集合:list,tuple,str和unicode;
2. 无序集合:set
3. 无序集合并且具有 key-value 对:dict

而迭代是一个动词,它指的是一种操作,在Python中,就是 for 循环。

任务:请用for循环迭代数列 1-100 并打印出7的倍数。

s=range(1,101)
for i in s:
    if i%7 == 0:
        print i

5、索引迭代:

>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']
>>> for index, name in enumerate(L):
...     print index, '-', name
... 
0 - Adam
1 - Lisa
2 - Bart
3 - Paul

任务:

zip()函数可以把两个 list 变成一个 list:

>>> zip([10, 20, 30], ['A', 'B', 'C'])
[(10, 'A'), (20, 'B'), (30, 'C')]

在迭代 ['Adam', 'Lisa', 'Bart', 'Paul'] 时,如果我们想打印出名次 - 名字(名次从1开始),请考虑如何在迭代中打印出来。

提示:考虑使用zip()函数和range()函数。

L = ['Adam', 'Lisa', 'Bart', 'Paul']
n = range(1,5)
s = zip(n,L)
for index, name in s:
    print index, '-', name

6、迭代dict字典中的value

dict 对象有一个 values() 方法,这个方法把dict转换成一个包含所有value的list,dict除了values()方法外,还有一个 itervalues() 方法,用 itervalues() 方法替代 values() 方法。

任务:

给定一个dict:

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }

请计算所有同学的平均分。

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }
i = d.values()
sum = 0.0
for x in i:
    sum = sum + x
print sum/len(i)

7、迭代dict的key和value

items() 函数和iteritems()函数

任务:

请根据dict:

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }

打印出 name : score,最后再打印出平均分 average : score

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59, 'Paul': 74 }
sum = 0.0
for k, v in d.iteritems():
    sum = sum + v
    print k, ':', v
print 'average', ':', sum / len(d)

8、生成列表:

#请利用列表生成式生成列表 [1x2, 3x4, 5x6, 7x8, ..., 99x100]
#提示:range(1, 100, 2) 可以生成list [1, 3, 5, 7, 9,...]
print [x*(x+1) for x in range(1,100,2)]