List
Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。
任务1:
假设班里有3名同学:Adam,Lisa和Bart,他们的成绩分别是 95.5,85 和 59,请按照 名字, 分数, 名字, 分数... 的顺序按照分数从高到低用一个list表示,然后打印出来。
代码如下:
L = ['Adam',95.5,'Lisa',85,'Bart',59]
print L
任务2:
三名同学的成绩可以用一个list表示:
L = [95.5, 85, 59]
请按照索引分别打印出第一名、第二名、第三名、第四名的分数(注意不要越界)。
代码如下:
L = [95.5,85,59]
print L[0]
print L[1]
print L[2]
print L[-1]
任务3:
三名同学的成绩可以用一个list表示:
L = [95.5, 85, 59]
请按照倒序索引分别打印出倒数第一、倒数第二、倒数第三(注意不要越界)。
代码如下:
L = ['',95.5, 85, 59]
print L[-1]
print L[-2]
print L[-3]
print L[-4]
任务4:
append()总是把新的元素添加到 list 的尾部
L.insert(0, 'Paul')的意思是,'Paul'将被添加到索引为 0 的位置上(也就是第一个),而原来索引为 0 的Adam同学,以及后面的所有同学,都自动向后移动一位。
假设新来一名学生Paul,Paul 同学的成绩比Bart好,但是比Lisa差,他应该排到第三名的位置,请用代码实现。
代码如下:
L = ['Adam', 'Lisa', 'Bart']
L.insert(2,'Paul')
print L
任务5:
pop()方法总是删掉list的最后一个元素,并且它还返回这个元素,所以我们执行 L.pop() 后,会打印出 'Paul'。如果是在list中间某一位置n,那就写pop(n-1)
注意右边编辑器代码中 list 如下:
L = ['Adam', 'Lisa', 'Paul', 'Bart']
Paul的索引是2,Bart的索引是3,如果我们要把Paul和Bart都删掉,请解释下面的代码为什么不能正确运行:
L.pop(2)
L.pop(3)
怎样调整代码可以把Paul和Bart都正确删除掉?
代码如下:
L = ['Adam', 'Lisa', 'Paul', 'Bart'] #必须从后面往前删除,如果从前面往后删除,后一位会自动补到前面,而后一位为空,再执行删除了,自然就报错了
L.pop(3)
L.pop(2)
print L
任务6:
班里的同学按照分数排名是这样的:
L = ['Adam', 'Lisa', 'Bart']
但是,在一次考试后,Bart同学意外取得第一,而Adam同学考了倒数第一。
请通过对list的索引赋值,生成新的排名。
代码如下:
L = ['Adam', 'Lisa', 'Bart']
L[0] = 'Bart'
L[2] = 'Adam'
print L
Tuple
tuple是另一种有序的列表,中文翻译为“ 元组 ”。tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了。
创建tuple和创建list唯一不同之处是用( )替代了[ ]。
现在,这个t就不能改变了,tuple没有 append()方法,也没有insert()和pop()方法。所以,新同学没法直接往 tuple 中添加,老同学想退出 tuple 也不行。
任务1:
创建一个tuple,顺序包含0 - 9这10个数。
代码如下:
t = (0,1,2,3,4,5,6,7,8,9)
print t
任务2:
创建包含1个元素的 tuple 呢?来试试:
>>> t = (1)
>>> print t
1
好像哪里不对!t 不是 tuple ,而是整数1。为什么呢?
因为()既可以表示tuple,又可以作为括号表示运算时的优先级,结果 (1) 被Python解释器计算出结果 1,导致我们得到的不是tuple,而是整数 1。
正是因为用()定义单元素的tuple有歧义,所以 Python 规定,单元素 tuple 要多加一个逗号“,”,这样就避免了歧义:
>>> t = (1,)
>>> print t
(1,)
请指出代码为什么没有创建出包含一个学生的 tuple:
t = ('Adam')
print t
请修改代码,确保 t 是一个tuple。
代码如下:
t = ('Adam',)
print t
任务3:
定义了tuple:
t = ('a', 'b', ['A', 'B'])
由于 t 包含一个list元素,导致tuple的内容是可变的。能否修改上述代码,让tuple内容不可变?
代码如下:
t = ('a', 'b', ('A', 'B'))
print t