Python Learning-列表

作者: 东南有大树 | 来源:发表于2018-08-21 14:27 被阅读0次

    列表由一系列按特定顺序排列的元素的对象。它是一种有序的、可扩展与收缩的对象。如果学过其它语言,它看起来有点像数组,不过,列表中可以存储不同类型的对象

    列表用[]来表示;列表中的元素逗号进行分隔

    例:定义一个包含不同类型的自行车列表,并将列表赋值给一个变量

    bicycles = ['trek', 'cannondale', 'redline', 'specialized']
    

    打印这个列表看看

    print(bicycles)
    

    输出:

    ['trek', 'cannondale', 'redline', 'specialized']

    访问列表元素

    因为列表是有序的,所有可以通过索引来访问到列表中的元素

    列表中元素的索引默认从0开始
    例:从bicycles列表中取出trek类型的自行车

    print(bicycles[0])
    

    输出:

    treck

    treck在列表中的第一个位置,所以它的索引是0;通过索引访问元素可在列表名称后加上方括号[],在括号中填写上索引即可

    print(bicycles[0].title())  # 将输出的内容开头大写
    

    输出:

    Treck

    请记住,索引从0开始,第1个元素的索引是0,第2个元素的索引是1,第3个元素的索引是2,……第n个元素的索引是n-1

    如果索引为-1,可直接访问到最后一个元素

    print(bicycles[-1])
    

    输出:

    specialized

    当索引值是正数时,取值是从左向右取的;如果索引是负数时,取值是从右往左取的;所以,当索引是-2时,将得到列表中倒数第2个元素

    修改、添加和删除元素

    列表不仅是有序的,而且是动态的,它可以在程序运行过程中添加、修改和删除其中的元素

    修改

    例:创建一个食物列表

    foods = ['potato', 'tomato', 'noodles', 'apple']
    

    将第一个元素potato修改为banana

    foods[0] = 'banana'
    print(foods)
    

    输出:

    ['banana', 'tomato', 'noodles', 'apple']

    通过foods[0]访问到了第一个元素potato,再通将'banana'赋值给该元素,便完成了修改动作

    添加

    例:在foods列表中添加一个新的食物梨pear

    foods.append('pear')
    print(foods)
    

    输出:

    ['banana', 'tomato', 'noodles', 'apple', 'pear']

    append()会将新元素添加到列表的末尾

    如何在指定位置添加(插入)一个新元素呢?

    foods.insert(1, 'peanut')
    print(foods)
    

    输出:

    ['banana', 'peanut', tomato', 'noodles', 'apple', 'pear']

    insert()方法可以将新元素插入到列表的指定位置,括号中的1表示要将新元素添加到索引1的位置上,peanut表示要插入的新元素花生,相应的,其它元素的位置都会向右移动一个位置

    删除

    例:将foods列表中的元素peanut删掉

    del foods[1]
    print(foods)
    

    输出:

    ['banana', 'tomato', 'noodles', 'apple', 'pear']

    del会将列表删除掉,如果想删除某个元素,可以通过访问索引的方式来删除其中的一个元素,在这里,通过访问索引1,删除掉了花生元素

    如果这样写

    del foods
    print(foods)
    

    输出:

    Traceback (most recent call last):
    File "<pyshell#3>", line 1, in <module>
    foods
    NameError: name 'foods' is not defined

    程序会报错,因为del foods将foods对象从内存中删除掉了,程序再也找不到它了

    使用pop()将删除的元素返回

    直接看例子:

    food = foods.pop()
    print(food)
    print(foods)
    

    输出:

    pear

    ['banana', 'tomato', 'noodles', 'apple']

    此时,列表中的最后一个元素不见了,而变量food被方赋值了pearpop()方法会将列表中最后一个元素弹出,可以将此时的列表想象成一个栈,最后一个进入栈中的元素将会被弹出,这是一个后进先出模式

    弹出列表中任何位置的元素

    food = foods.pop(1)
    print(food)
    print(foods)
    

    通过在pop()中指定索引来弹出指定位置的元素,这里将第2个元素tomato弹出,并保存到了变量food

    请牢记,当使用pop()弹出一个元素时,该元素便从列表中消失了

    如果知道元素的名称,却不知道它在列表的什么位置,如何删除?

    此时可以使用remove()方法

    例:将foods列表中noodles元素删除

    foods.remove('noodles')
    print(foods)
    

    输出:

    ['banana', 'tomato', 'apple']

    元素noodles从列表中被删除;remove()方法接受一个字符串参数,用来指定要删除的元素的名称

    如果noodles元素在列表中出现多次,remove()只要删除第一个匹配到的元素,也就是只会删除一次

    列表排序

    列表虽然是有序的,但并不代表所有的元素的排序都是合理的,Python提供了排序方法

    sort()可以对列表进行永久性的排序

    例:

    foods = ['potato', 'tomato', 'noodles', 'apple']
    foods.sort()
    print(foods)
    

    输出:

    ['apple', 'noodles', 'potato', 'tomato']

    可以看出,sort()foods列表中的元素按首字母进行了排序,这是它针对字符串默认的排序方式

    并且,此后这个列表将永远变成排序后的样子

    foods列表中元素按首字母倒序排列

    foods.sort(reverse=True)
    print(foods)
    

    输出:

    ['tomato', 'potato', 'noodles', 'apple']

    sort()方法传递参数reverse=True即告诉该方法是否将元素反转,也是就是倒序;默认reverse=Fase,即不倒序

    如果不想永久性的改变列表的排序结构,可以使用sorted()方法

    例:

    foods = ['potato', 'tomato', 'noodles', 'apple']
    print(sorted(foods))
    print(foods)
    

    输出:

    ['apple', 'noodles', 'potato', 'tomato']
    ['potato', 'tomato', 'noodles', 'apple']

    可以看出,第一行是排序后的输出,第二行是原来的列表,其内容顺序并没有发生变化

    同样的,也可以向sorted()方法中传入reverse=True参数,将列表进行倒序

    foods = ['potato', 'tomato', 'noodles', 'apple']
    print(sorted(foods, reverse=True))
    print(foods)
    

    输出:

    ['tomato', 'potato', 'noodles', 'apple']

    ['potato', 'tomato', 'noodles', 'apple']

    有时候,列表中的元素并不都是小写字符串,不家可能有的是数字有的是字符串,这些情况下的排序是比较复杂的,将会在后面讨论

    reverse()函数可以将列表反转,并且只有反转的功能

    例:

    foods = ['potato', 'tomato', 'noodles', 'apple']
    foods.reverse()
    print(foods)
    

    输出:

    ['apple', 'noodles', 'tomato', 'potato']

    注意,reverse()不是对列表进行排序,而是将原列表进行左右反转

    reverse()对列表的操作是永久性的

    查看列表的长度

    foods = ['potato', 'tomato', 'noodles', 'apple']
    print(len(foods))
    

    输出:

    4

    len()函数将返回列表foods的长度,也就是元素的个数

    注意,如果写错索引位置,将会导致数据错误或系统报错,新手常会现出索引上的问题

    例:

    foods = ['potato', 'tomato', 'noodles', 'apple']
    print(foods[4])
    

    foods列表中最大索引是3,报错内容:

    Traceback (most recent call last):
    File "C:/Users/Administrator/Desktop/s.py", line 2, in <module>
    print(foods[4])
    IndexError: list index out of range

    附语:

    Python语句的末尾可以不写分号,当然写上分号也是正确的,为了简洁与美观,一般不会在语句末尾加分号

    目录
    上一章 Python Learning-变量和简单数据类型
    下一章 Python Learning-列表的更多操作

    相关文章

      网友评论

        本文标题:Python Learning-列表

        本文链接:https://www.haomeiwen.com/subject/yexjiftx.html