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

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

  

时间: 2024-10-19 17:41:38

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

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

对象 1.什么是对象?具有属性和方法(能够对对象做的操作)的某个实例可以称为对象.如,一个球,属性有球的颜色,球的大小,球的重量,方法有球的运动方向: 2.属性和方法.如1中所述,属性很好理解,就是能够描述对象特征的一些变量,方法可以理解为一些代码块,这些代码块可以对对象完成一些操作,和我们平时讲的函数有些相似: 3.什么是类?对象的描述(将要让这个对象做什么实现什么功能)或蓝图称为一个类: 4.创建类的一个实例.类的定义只是写了一个框架,将有什么样的属性,将要实现什么样的功能,都是空谈,只有使

父与子的编程之旅【第二版】高清中文版PDF+高清英文版PDF+源代码

下载:https://pan.baidu.com/s/17jzBzVdQ2XMmRIrOZhMnDQ <父与子的编程之旅[第二版]>高清中文版PDF+高清英文版PDF+源代码 高清中文版PDF,带目录和书签,能够复制粘贴:高清英文版PDF,带目录和书签,能够复制粘贴:中英文两版可以对比学习. 配套源代码: 经典书籍,讲解详细: 其中高清中文版如图 原文地址:http://blog.51cto.com/3215120/2307538

Python入门《父与子的编程之旅第2版》+《教孩子学编程Python语言版》

无论有无编程基础,无论大人小孩,学习编程语言,建议首选Python.初次接触Python,或者想快速应用Python完成一些任务,建议学习<父与子的编程之旅第2版>电子书和<教孩子学编程Python语言版>电子书. 对于孩子们来说,纯粹的数学计算并不是那么的有趣:而能够做出一个看得到的东西,则是一件很有成就感的事情.<父与子的编程之旅第2版>电子书在七分之一的篇幅处即引入了GUI的概念和实际例子,在四分之一的篇幅处即告知孩子们“游戏时间到了”,让孩子们可以自己敲击代码来

父与子的编程之旅第十章学习

今天下午码了一下午代码,初学Python,希望通过自己敲代码能够学的更快,事实证明,自己敲代码的确是值得的,编译的时候出现很多错误,有漏掉字母,逗号句号混乱等等低级错误,通过软件给的提示,慢慢找,也解决了,这个是一个游戏的代码,大家可以稍微感受下,下面来几张图: 上面是部分代码,下面看下运行后的图: 效果还不错,虽然码代码很累,但是看到自己辛辛苦苦做出来的成果还是很开心,希望有一天自己可以按照自己想法写一个小游戏. 从菜鸟到高手,路还长,慢慢来.

《父与子的编程之旅 python【第二版】》高清中文版PDF+高清英文版PDF+源代码

下载:https://pan.baidu.com/s/17jzBzVdQ2XMmRIrOZhMnDQ 以Python语言为例,详尽细致地介绍了Python如何安装.字符串和操作符等程序设计的基本概念. 高清中文版PDF,带目录和书签,能够复制粘贴:高清英文版PDF,带目录和书签,能够复制粘贴:中英文两版可以对比学习. 配套源代码: 经典书籍,讲解详细: 其中高清中文版如图 原文地址:https://www.cnblogs.com/javapythonstudy/p/9884881.html

《Linux命令行与shell脚本编程大全》第二十二章 gawk进阶

gawk是一门功能丰富的编程语言,你可以通过它所提供的各种特性来编写好几程序处理数据. 22.1 使用变量 gawk编程语言支持两种不同类型的变量: 内建变量和自定义变量 22.1.1 内建变量 gawk程序使用内建变量来引用程序数据里的一些特殊功能 1.字段和记录分隔符变量 数据字段变量:允许你使用美元符和字段在该记录中的位置值来引用记录对应的字段. 要引用第一个字段就用变量$1,第二个就用$2,-.以此类推. 数据字段是由分隔符来划定的.默认字段分隔符是一个空白字符,也就是空格或者制表符.

《Java并发编程实战》第十二章 测试并发程序 读书笔记

并发测试分为两类:安全性测试(无论错误的行为不会发生)而活性测试(会发生). 安全測试 - 通常採用測试不变性条件的形式,即推断某个类的行为是否与其它规范保持一致. 活跃性測试 - 包含进展測试和无进展測试两个方面. 性能測试与活跃性測试相关,主要包含:吞吐量.响应性.可伸缩性. 一.正确性測试 找出须要检查的不变条件和后延条件. import java.util.concurrent.Semaphore; public class BoundedBuffer<E> { private fin

《C++编程思想》 第十二章 动态对象创建 (习题+解答)

一.相关知识点 重载new和delete 当创建一个new表达式时有两件事发生.首先,使用运算符new分配内存,然后调用构造函数.在delete表达式里,调用析构函数,然后使用运算符delete释放内存.我们永远无法控制构造函数和析构函数的调用(否则我们可能意外地搅乱它们),但可以改变内存分配函数运算符new和delete. 被new和delete使用的内存分配系统是为通用目的而设计的.但在特殊的情形下,它不能满足我们的需要.改变分配系统的原因是考虑效率:我们也许要创建和销毁一个特定的类的非常多

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

12-1.路径搜索和搜索路径.路径搜索和搜索路径之间有什么不同? 前者是指查找某个文件的操作,后者是去查找一组目录. 12-2. 导入属性.假设你的模块mymodule里有一个foo()函数. (a)把这个函数导入到你的名称空间有哪两种方法? (b)这两种方法导入后的名称空间有什么不同? import mymodule from mymodule import foo 第一种将mymodule里的属性全部导入,第二种只导入foo 12-3.导入"import module"和"