zoukankan      html  css  js  c++  java
  • 课时10:列表:一个打了激素的数组1

    目录:
      一、创建列表

      二、向列表添加元素

      三、课时10课后习题及答案

    ***************

    一、创建列表

    ***************

    创建列表跟创建普通变量一样,用中括号括起一堆数据就可以了,数据之间用逗号隔开。

    >>> number = [1,2,3,4,5]
    >>> number
    [1, 2, 3, 4, 5]
    >>> len(number)
    5

    可以创建一个鱼龙混杂的列表:

    >>> mix = [1,"小甲鱼",3.14,[1,2,3]]
    >>> mix
    [1, '小甲鱼', 3.14, [1, 2, 3]]

    可以创建一个空列表:

    >>> empty = []
    >>> empty
    []

    ***********************

    二、向列表添加元素

    ***********************

    append()   extend()   insert()

    要向列表中添加元素,可以使用append()方法:(注:append()不是一个BIF,它属于列表对象的一个方法)

    >>> number = [1,2,3,4,5]
    >>> number.append(6)
    >>> number
    [1, 2, 3, 4, 5, 6]

    我们把数字7和8添加进去,但是发现并不能用append()同时添加多个元素:这时候我们可以使用extend()方法向列表末尾添加多个元素:

    >>> number.append(7,8)
    Traceback (most recent call last):
      File "<pyshell#3>", line 1, in <module>
        number.append(7,8)
    TypeError: append() takes exactly one argument (2 given)
    >>> number.extend(7,8)
    Traceback (most recent call last):
      File "<pyshell#4>", line 1, in <module>
        number.extend(7,8)
    TypeError: extend() takes exactly one argument (2 given)

    怎么都报错了呢?!extend()方法事实上使用一个列表来扩展另一个列表,所以它的参数应该是一个列表:

    >>> number.extend([7,8])
    >>> number
    [1, 2, 3, 4, 5, 6, 7, 8]

    如果想要往列表的任意位置插入元素,就要使用insert()方法。insert()方法有两个参数:第一个参数代表在列表中的位置,第二个参数是在这个位置处插入一个元素。不妨来试一下,让数字0出现在列表number的最前边:(注:列表的第一位索引值是0)

    >>> number.insert(0,0)
    >>> number
    [0, 1, 2, 3, 4, 5, 6, 7, 8]

    *******************************

    三、课时10课后习题及答案

    *******************************

    测试题:
      
    0. 列表都可以存放一些什么东西?
    1. 向列表增加元素有哪些方法?
    2. append() 方法和 extend() 方法都是向列表的末尾增加元素,请问他们有什么区别?
    3. member.append(['竹林小溪', 'Crazy迷恋']) 和 member.extend(['竹林小溪', 'Crazy迷恋']) 实现的效果一样吗?
    4. 有列表 name = ['F', 'i', 'h', 'C'],如果小甲鱼想要在元素 'i' 和 'h' 之间插入元素 's',应该使用什么方法来插入?

    动动手:
     
    0. 自己动手试试看,并分析在这种情况下,向列表添加数据应当采用哪种方法比较好?
    假设给定以下列表:
    member = ['小甲鱼', '黑夜', '迷途', '怡静', '秋舞斜阳']
    要求将列表修改为:
    member = ['小甲鱼', 88, '黑夜', 90, '迷途', 85, '怡静', 90, '秋舞斜阳', 88]
    方法一:使用 insert() 和 append() 方法修改列表。
    方法二:重新创建一个同名字的列表覆盖。

    1. 利用 for 循环打印上边 member 列表中的每个内容,如图:

    小甲鱼
    88
    黑夜
    90
    迷途
    85
    怡静
    90
    秋舞斜阳
    88

    2. 上一题打印的样式不是很好,能不能修改一下代码打印成下图的样式呢?【请至少使用两种方法实现】

    小甲鱼 88
    黑夜 90
    迷途 85
    怡静 90
    秋舞斜阳 88

    答案:

    测试题答案:
     
    0. 列表都可以存放一些什么东西?
    我们说 Python 的列表是一个打了激素的数组,如果把数组比喻成集装箱,那么 Python 的列表就是一个大仓库,Ta 可以存放我们已经学习过的任何数据类型。
     
    1. 向列表增加元素有哪些方法? 
    这节课我们教过大家三种方法想列表增加元素,分别是:append()、extend() 和 insert()。
     
    2. append() 方法和 extend() 方法都是向列表的末尾增加元素,请问他们有什么区别?
    append() 方法是将参数作为一个元素增加到列表的末尾。
    extend() 方法则是将参数作为一个列表去扩展列表的末尾。
    >>> name = ['F', 'i', 's', 'h']
    >>> name.append('C')
    >>> name
    ['F', 'i', 's', 'h', 'C']
    >>> name.extend(['.', 'c'])
    >>> name
    ['F', 'i', 's', 'h', 'C', '.', 'c']
    >>> name.append(['o', 'm'])
    >>> name
    ['F', 'i', 's', 'h', 'C', '.', 'c', ['o', 'm']]
    3. member.append(['竹林小溪', 'Crazy迷恋']) 和 member.extend(['竹林小溪', 'Crazy迷恋']) 实现的效果一样吗?
    不一样,因为怕大家没有仔细看上一题的示例,所以不懂的请看上一题解释。
    >>> member = [1,2,3]
    >>> member.append(['竹林小溪', 'Crazy迷恋'])
    >>> member
    [1, 2, 3, ['竹林小溪', 'Crazy迷恋']]
    >>> member = [1,2,3]
    >>> member.extend(['竹林小溪', 'Crazy迷恋'])
    >>> member
    [1, 2, 3, '竹林小溪', 'Crazy迷恋']
    4. 有列表 name = ['F', 'i', 'h', 'C'],如果小甲鱼想要在元素 'i' 和 'h' 之间插入元素 's',应该使用什么方法来插入?
    name.insert(2, 's')
     
    动动手答案:
     
    0. 自己动手试试看,并分析在这种情况下,向列表添加数据应当采用哪种方法比较好?
    假设给定以下列表:
    member = ['小甲鱼', '黑夜', '迷途', '怡静', '秋舞斜阳']
    要求将列表修改为:
    member = ['小甲鱼', 88, '黑夜', 90, '迷途', 85, '怡静', 90, '秋舞斜阳', 88]
    方法一:使用 insert() 和 append() 方法修改列表。
    方法二:重新创建一个同名字的列表覆盖。
    解答:
    方法一:
    member.insert(1, 88)
    member.insert(3, 90)
    member.insert(5, 85)
    member.insert(7, 90)
    member.append(88) #或者写成 member.insert(9,88)也可以

    方法二:

    member = ['小甲鱼', 88, '黑夜', 90, '迷途', 85, '怡静', 90, '秋舞斜阳', 88]

    对于这种情况,明显是第二种方法看起来要好一些嘛。
    不过对于大型的列表,第一种方法可能更合适,所以我们说永远没有最好的,只有最合适的。

    1. 利用 for 循环打印上边 member 列表中的每个内容

    member = ['小甲鱼', 88, '黑夜', 90, '迷途', 85, '怡静', 90, '秋舞斜阳', 88]
    for each in member:
        print(each)
    >>> member = ['小甲鱼', 88, '黑夜', 90, '迷途', 85, '怡静', 90, '秋舞斜阳', 88]
    >>> for each in member:
            print(each)
    
            
    小甲鱼
    88
    黑夜
    90
    迷途
    85
    怡静
    90
    秋舞斜阳
    88

    2. 上一题打印的样式不是很好,能不能修改一下代码打印成下图的样式呢?【请至少使用两种方法实现】

    方法一:
    count = 0
    length = len(member)
    while count < length:
        print(member[count], member[count+1])
        count += 2
    
    方法二:    
        
    for each in range(len(member)):
        if each%2 == 0:
            print(member[each], member[each+1])


    小甲鱼 88
    黑夜 90
    迷途 85
    怡静 90
    秋舞斜阳 88

     我们来分析下:题目要求是要将每个名字跟对应的成绩打印在同一行。我们来看看,第一列全是名字,索引值依此是0,2,4,6,8,同理第二列的成绩全是奇数,索引值依此是1,3,5,7,9.不由得让人想到了判断奇偶数的%,另外,要呈现print(number[x],number[x+1])的结果,里面的第一个索引值可以依赖for循环的range()内建函数,加上奇偶的判断实现。 方法一是通过while循环,每次循环加2。同样的原理。

    member = ['小甲鱼', 88, '黑夜', 90, '迷途', 85, '怡静', 90, '秋舞斜阳', 88]
    print(len(member))
    print(member[10])
    for i in range(0,len(member), 2):
        print(member[i],member[i+1])
    

      

    值得注意的一点是这里 range()内建函数的 each的值不会受到 循环体内 range变量变化的影响。

     
    爱笑的男孩运气都不会差
  • 相关阅读:
    windows下GitHub的SSH Key 配置
    bootdo开源项目修改代码后页面无效
    携程第二场预赛 1003:位图像素的颜色(水题,判断点是否在矩形内)
    hdu 2105:The Center of Gravity(计算几何,求三角形重心)
    《随机出题软件》&《随机分队软件》源码(Windows API)
    hdu 1426:Sudoku Killer(DFS深搜,进阶题目,求数独的解)
    fzu 1330:Center of Gravity(计算几何,求扇形重心)
    hrbustoj 1104:Leyni, LOLI and Line(解析几何,斜截式的应用)
    poj 3348:Cows(计算几何,求凸包面积)
    《linux系统及其编程》实验课记录(五)
  • 原文地址:https://www.cnblogs.com/DC0307/p/9382472.html
Copyright © 2011-2022 走看看