zoukankan      html  css  js  c++  java
  • #父与子的编程之旅#第十二章

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

      

  • 相关阅读:
    对象直接量
    js学习类
    jquery.js与sea.js综合使用
    拥抱模块化的JavaScript
    匿名函数与闭包
    js对象如何合并?
    Web.config配置文件详解
    javascipt自定义命名空间、静态类、实例对象
    jQuery源码的基础知识
    企业架构/企业开发 [Enterprise architecture / Enterprise Development]
  • 原文地址:https://www.cnblogs.com/weimiaomiao/p/5239310.html
Copyright © 2011-2022 走看看