第12章主要介绍列表和字典。列表很好理解,和C语言里面的数组差不多,字典是python里面的新知识,重点关注。
- 列表
- 什么是列表?列表可以说是一个方括号括起来的大集合。如:可以是字符串的集合,family = ['Mom','Dad','Me'];可以是数字的集合,luckyNumbers = [1,2,3,4,5];可以是混合的集合,包括数字,字符串,对象甚至其他列表,my_list = [5,'HELLO',myTeacher,7,another_list,[1,2,3]]
- 如何创建一个列表?newList = [],这就是一个空列表;又或者,newList = [1,2,3,4],给定列表内容的列表
- 向列表添加元素?
append()向列表末尾添加一个元素。e.g. friends.append('David')
extend()向列表末尾添加多个元素。e.g. friends.extend(['p','q','r'])
insert()向列表中的某个位置添加一个元素,不一定非得在末尾。e.g. friends.insert(2,'z')
append()和extend()在添加元素的时候,效果是不一样的,extend()是将添加的多个元素直接添加到末尾,而append()将添加的多个元素作为一个列表添加到末尾。反正append()只能添加一个元素在末尾,如果笔者要强制添加多个元素,那么它就把多个元素当作一个列表添加进去,试想列表也可以作为列表的一个元素啊。
4.如何删除列表中的元素?假设letters = ['a','b','c']
remove()根据元素的值删除元素。e.g. letters.remove('c')
del 允许利用索引从列表中删除元素。e.g. del letters[2]
pop()括号中没有东西的时候是取出列表中最后一个元素交给你,当然括号中有索引就根据索引删除。e.g. lastLetter = letters.pop() e.g. second = letters.pop(1)
5.如何确定列表是否包含某个值?使用 in关键字。ps:这个in关键字在字典中也同样适用。
6.如何对列表排序?顺序排序用sort(),逆序排序用reverse()或者用sort(reverse = True) e.g. letters.sort() e.g. letters.reverse() e.g. letters.sort(reverse = True)这些都是会改变原来列表的排序方法;另一种排序方法sorted()在不改变原始列表的基础上对列表副本进行排序, e.g. new = sorted(original),这里原始列表original和排序后的列表new都存在。
7.如何建立列表的副本?new = original[:]
8.什么是元组?元组是不可改变的列表,它不能添加删除元素更不能排序,使用圆括号来定义。e.g. my_tuple = ("red","blue","green")
9.什么是双重列表?和二元数组类似,主要注意的是索引都是从0开始的。e.g. classMarks[0][2]表示第一行第三列的一个元素。
- 字典
1.什么是字典?就像电话簿中,有人名和名字对应的号码一样;字典中有键和键对应的值,称之为键值对。字典就是键值对的集合。创建一个空字典phoneNum = {}
2.如何向字典中添加项?一种是phoneNum = {"John":"12345"},另一种是phoneNum["Jhon"] ="12345",两种的效果是一样的,但是在字典中添加的键值对是没有固定顺序的,先添加进去的键值对打印出来的时候可能在后面。
3.怎么样用键去查找一个条目?keys()方法会列出字典中所有的键,values()方法会列出字典中所有的值,而phoneNum[key]可以根据索引列出字典中相应位置的值,key表示索引
4.怎样删除字典中的条目?
del 根据关键字删除条目。e.g. del phoneNum["Jhon"]
clear() 清空字典。 e.g. phoneNum.clear()
- 列表和字典的异同
相同点:
列表和字典都是一个集合,都可以包含数字,字符串,对象甚至其他集合的集合。
都提供查找条目的方法。
相异点:
列表是有序的,字典是无序的。(字典可以根据其中的数值排序或者根据键中的字母排序,但是整个字典是无法排序的)
列表中的元素使用索引访问而字典中的元素使用键来访问
#动手试一试T1。写一个程序,让用户提供5个名字。程序要把这5个名字保存在一个列表中, #最后打印出来。就像这样: ''' Enter 5 names: Tony Paul Nick Michel Kevin The names are Tony Paul Nick Michel Kevin ''' names = [] print 'Enter 5 names: ' for i in range(5): names.append(raw_input()) print 'The names are', for j in range(5): print names[j], #动手试一试T2。修改第一题的程序,要求不仅显示原来的名字列表,还要显示出排序后的列表 names = [] print 'Enter 5 names: ' for i in range(5): names.append(raw_input()) print 'The names are', for j in range(5): print names[j], print sortednames = names[:] sortednames.sort() print 'The sorted names are', for k in range(5): print sortednames[k], #动手试一试T3。修改第一个程序,要求只显示用户键入的第3个名字,就像这样: #The third name you entered is: Nick names = [] print 'Enter 5 names: ' for i in range(5): names.append(raw_input()) print 'The third name you entered is:',names[2] #动手试一试T4。修改第1题的程序,让用户替换其中一个名字。用户应该能选择要替换哪个名字,然后键入新名字。 #最后显示这个新的列表: ''' Enter 5 names: Tony Paul Nick Michel Kevin The names are Tony Paul Nick Michel Kevin Replace one name. Which one?(1-5): 4 New name: Peter The names are Tony Paul Nick Peter Kevin ''' names = [] print 'Enter 5 names: ' for i in range(5): names.append(raw_input()) print 'The names are', for j in range(5): print names[j], print n = int(raw_input('Replace one name. Which one?(1-5):')) names[n-1] = raw_input('New name:') print 'The names are', for k in range(5): print names[k], #动手试一试T5。编写一个字典程序,让用户可以添加单词和定义,然后可以查找这些单词。确保当 #要查找的词不存在时,用户能够知晓。运行的时候,它应该是这样的: ''' Add or look up a word (a/l)? a Type the word: computer Type the defiition: A machine that does very fast math Word added! Add or look up a word (a/l)? 1 Type the word: computer A machine that does very fast math Add or look up a word (a/l)?1 Type the word: qwerty That word isn't in the dictionary yet. ''' dictionary = {} move = raw_input('Add or look up a word (a/l)?') if move == 'a': inputname = raw_input('Type the word:') dictionary[inputname] = raw_input('Type the definition:') print 'Word added!' move = raw_input('Add or look up a word (a/l)?') if move == 'l': thenname = raw_input('Type the word:') if thenname in dictionary: print dictionary[thenname] move = raw_input('Add or look up a word (a/l)?') thenname = raw_input('Type the word:') if thenname not in dictionary: print "That word isn't in the dictionary yet."
。