#父与子的编程之旅#第十二章

Posted WMM2

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#父与子的编程之旅#第十二章相关的知识,希望对你有一定的参考价值。

第12章主要介绍列表和字典。列表很好理解,和C语言里面的数组差不多,字典是python里面的新知识,重点关注。

  • 列表
  1. 什么是列表?列表可以说是一个方括号括起来的大集合。如:可以是字符串的集合,family = [‘Mom‘,‘Dad‘,‘Me‘];可以是数字的集合,luckyNumbers = [1,2,3,4,5];可以是混合的集合,包括数字,字符串,对象甚至其他列表,my_list = [5,‘HELLO‘,myTeacher,7,another_list,[1,2,3]]
  2. 如何创建一个列表?newList = [],这就是一个空列表;又或者,newList = [1,2,3,4],给定列表内容的列表
  3. 向列表添加元素?

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."

  

以上是关于#父与子的编程之旅#第十二章的主要内容,如果未能解决你的问题,请参考以下文章

第十二章:面向对象编程

第十二章 并发编程

《JAVA编程思想》学习笔记——第十二章 通过异常处理错误

第十二章:Python の 网络编程进阶

JavaScript DOM编程艺术-学习笔记(第十二章)

Python核心编程第二版 第十二章课后答案