• HeadFirstPython-初识python


    HeadFirstPython-初识python

    下面我们来看一下实例:
    在书中,作者给我们展示了一个电影清单。在这里我们要学习列表的基本操作方法。

    cast = ["Cless","plain","Jones","Idle"]

    针对这个列表的实例,我们能做哪些操作?

    打印出这个实例:

    In [28]: print(cast)
    ['Cless', 'plain', 'Jones', 'Idle']

    向这个实例添加一个新的数据项

    In [29]: cast.append("iamappend")

    In [30]: print(cast)
    ['Cless', 'plain', 'Jones', 'Idle', 'iamappend']

    从这个实例中弹出最后一个数据项
    In [31]: cast.pop()
    Out[31]: 'iamappend'

    In [32]: print(cast)
    ['Cless', 'plain', 'Jones', 'Idle']

    从这个实例中移除指定的数据项。比如我要移除plain
    In [33]: cast.remove("plain")

    In [34]: print(cast)
    ['Cless', 'Jones', 'Idle']

    现在数据项比以前少了,我再插入到指定的位置上。
    In [35]: cast.insert(1,"plain")

    In [36]: cast
    Out[36]: ['Cless', 'plain', 'Jones', 'Idle']

    如何合并列表?
    In [37]: newa = ["Gmail","baidu","sina"]

    In [38]: print(newa)
    ['Gmail', 'baidu', 'sina']

    In [39]: cast.extend(newa)

    In [40]: cast
    Out[40]: ['Cless', 'plain', 'Jones', 'Idle', 'Gmail', 'baidu', 'sina']

    以上只是简单的描述了一个如何对列表做一个操作。

    下一节: 向列表增加更多的数据。
    在书13页中,第一题:
    原题:
    movies = ["The Holy Grail","The Life of Brain","The Meaning of Life"]
    将其变成:
    movies = ["The Holy Grail",1975,"The Life of Brain",1979,"The Meaning of Life",1983]

    操作方法1.直接在进行人工插入
    In [42]: movies = ["The Holy Grail","The Life of Brain","The Meaning of Life"]

    In [43]: movies.insert(1,1975)

    In [44]: movies.insert(3,1979)

    In [45]: movies.insert(5,1983)

    这里可以直接使用 movies.append(1983) 因为这是最后一个了

    In [46]: print(movies)
    ['The Holy Grail', 1975, 'The Life of Brain', 1979, 'The Meaning of Life', 1983]

    操作方法2.就是直接新建列表
    In [47]: movies = ['The Holy Grail', 1975, 'The Life of Brain', 1979, 'The Meaning of Life', 1983]

    In [48]: print(movies)
    ['The Holy Grail', 1975, 'The Life of Brain', 1979, 'The Meaning of Life', 1983]

    下一节 处理列表数据

    简单的迭代
    fav_movies = ["The Holy Grail","The Life of Brian"]

    In [54]: for each_fclick in fav_movies:
    ....: print(each_fclick)
    ....:
    The Holy Grail
    The Life of Brian

    基本的迭代都是由for 或者while进行操作。
    两者的区别:
    while必须要使用状态信息,需要使用计数标识。否则有可能死循环下去。下面例子中 count就是作为计数标识符存在
    In [57]: while count < len(movies):
    ....: print(movies[count])
    ....: count=count+1
    ....:
    The Holy Grail
    1975
    The Life of Brain
    1979
    The Meaning of Life
    1983

    使用for作迭代时,python解释器将你考虑状态信息。

    下一节,在列表中存储列表

    很长的一个列表了
    In [62]: movies = ["The Holy Grail",1975,"Terry Jone & Terry Gillam",91,
    ["Graham chapman",["Michael Palin","Jone Cleese","Terry Gillam","Eric Idle","Terry Jone"]]]

    In [63]: print(movies)
    ['The Holy Grail', 1975, 'Terry Jone & Terry Gillam', 91, ['Graham chapman', ['Michael Palin', 'Jone Cleese', 'Terry Gillam', 'Eric Idle', 'Terry Jone']]]

    这么多层的列表肯定不是人工写的,使用Python如何来实现这么多层的列表呢
    In [74]: a = ["aaa","ccc"]

    In [75]: b = ["aaa111","ccc111"]

    In [76]: a.append(b) #如果是用a.extend的话,就是把两个列表进行合并了

    In [77]: a
    Out[77]: ['aaa', 'ccc', ['aaa111', 'ccc111']]

    多列表嵌套的迭代问题
    In [65]: for each_item in movies:
    ....: print(each_item)
    ....:
    The Holy Grail
    1975
    Terry Jone & Terry Gillam
    91
    ['Graham chapman', ['Michael Palin', 'Jone Cleese', 'Terry Gillam', 'Eric Idle', 'Terry Jone']]

    使用简单的for循环无法做打打出第一个数据项

    做一个迭代并且加上元素的类型判断
    In [66]: for each_item in movies:
    ....: if isinstance(each_item,list):
    ....: for each1_item in each_item:
    ....: if isinstance(each1_item,list):
    ....: for each2_item in each1_item:
    ....: print(each2_item)
    ....: else:
    ....: print(each1_item)
    ....: else:
    ....: print(each_item)
    ....:
    The Holy Grail
    1975
    Terry Jone & Terry Gillam
    91
    Graham chapman
    Michael Palin
    Jone Cleese
    Terry Gillam
    Eric Idle
    Terry Jone

    上面的一个例子中,代码有得用的存在,随着列表的嵌套越来越多层的时候,这个循环是有问题。
    下面使用一个函数进行简化操作:

    In [69]: def print_lol(the_list):
    ....: for each_item in the_list:
    ....: if isinstance(each_item,list):
    ....: print_lol(each_item) #重点在这一行上
    ....: else:
    ....: print(each_item)
    ....:

    In [73]: print_lol(movies)
    The Holy Grail
    1975
    Terry Jone & Terry Gillam
    91
    Graham chapman
    Michael Palin
    Jone Cleese
    Terry Gillam
    Eric Idle
    Terry Jone

    这里有一段按照书上指导写的函数

    def print_lol(the_list,indent=False,level=0):
    """
    模块参数说明:
    indent是一个用于控制是否缩进,默认值为False,启用值为Ture.
    level是一个用于控制缩进的级别,默认为0
    """
    for each_item in the_list:
    if isinstance(each_item,list):
    print_lol(each_item,indent,level+1)
    else:
    if indent:
    "这条语句表示一旦indent为Ture的时候,表示缩进已经打开"
    #for tab_stop in range(level):
    #print " ",
    print " " *level , #这种方式也是可以的,可以连这个循环都不用做
    "在python 2.x里这使用这种方式。在python 3.x里使用其他方式"
    print(each_item)

  • 相关阅读:
    如何自我介绍可以吸引面试官?
    测试用例有多重要?
    文档测试的要点是什么?
    android应用性能优化技法
    android中的ems的真正含义
    android studio的java代码中,提取普通字符串为常量
    Android配置启动页
    C/C++函数未运行,且显示Process returned -1073741571 (0xC00000FD)
    vue的组件及其使用方法
    Vue关闭ESLint
  • 原文地址:https://www.cnblogs.com/start0cheng/p/3558516.html
Copyright © 2020-2023  润新知