zoukankan      html  css  js  c++  java
  • 第3章 列表简介

    第3章 列表简介

    列表让你能够在一个地方存储成组的信息,其中可以只包含几个元素,也可以包含数百万个元素。列表是新手可直接使用的最强大的Python功能之一,它融合了众多重要的编程概念。

    3.1 列表是什么

    1 bicycles = ['trek','cannondale','redline','specialized']
    2 print(bicycles)

    ①列表由一系列按特定顺序排列的元素组成。你可以创建包含字符串数字的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系

    ②在Python中,用方括号( [] )来表示列表,并用逗号来分隔其中的元素。如行1

    3.1.1 访问列表元素

    1 bicycles = ['trek','cannondale','redline','specialized']
    2 print(bicycles[0])
    3 print(bicycles[0].title())

    ①列表是有序集合,因此要访问列表的任何元素,只需将该元素的位置或索引告诉Python即可。

    ②要访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内。如行2

    ③当你请求获取列表元素时,Python只返回该元素,而不包括方括号和引号:

    ④可以对任何列表元素调用字符串方法。如行3,调用字符串的title()

    3.1.2 索引从 0 而不是 1 开始

    1 bicycles = ['trek','cannondale','redline','specialized']
    2 print(bicycles[1])
    3 print(bicycles[3])
    4 print(bicycles[-1])
    5 print(bicycles[-2])

    ①在Python中,第一个列表元素的索引为0,而不是1。

    ②第二个列表元素的索引为1。根据这种简单的计数方式,要访问列表的任何元素,都可将其位置减1,并将结果作为索引。如行2、3

    ③Python为访问最后一个列表元素提供了一种特殊语法。通过将索引指定为 -1 ,可让Python返回最后一个列表元素。如行4

    ④-1索引在不知道列表长度的情况下访问最后的元素。这种约定也适用于其他负数索引。如行5

    3.1.3 使用列表中的各个值

    1 bicycles = ['trek','cannondale','redline','specialized']
    2 message = "My first bicycle was a " + bicycles[0].title() + "."
    3 print(message)

    ①可像使用其他变量一样使用列表中的各个值。

    ②可以使用拼接根据列表中的值来创建消息。如行2

     1 #习题1

    将一些朋友的姓名存储在一个列表中,并将其命名为 names 。依次访问该列表中的每个元素,从而将每个朋友的姓名都打印出来。

     2 names = ['张**', '赵**', '沈**', '王**']
     3 print(names[0])
     4 print(names[1])
     5 print(names[2])
     6 print(names[3])
     7 #习题2

    继续使用练习1的列表,但不打印每个朋友的姓名,而为每人打印一条消息。每条消息都包含相同的问候语,但抬头为相应朋友的姓名。

     8 names = ['张**', '赵**', '沈**', '王**']
     9 question = ',吃饭了吗?'
    10 print(names[0]+question)
    11 print(names[1]+question)
    12 print(names[2]+question)
    13 print(names[3]+question)
    14 #习题3

    想想你喜欢的通勤方式,如骑摩托车或开汽车,并创建一个包含多种通勤方式的列表。根据该列表打印一系列有关这些通勤方式的宣言,如“I would like to own a Honda motorcycle”。

    15 commuter_way = ['自行车','地铁','的士','公交']
    16 love = '我最喜欢的通勤方式是'
    17 print(love + commuter_way[1])

    3.2 修改、添加和删除元素

    大多数列表都将是动态的,列表创建后,将随着程序的运行增删元素

    3.2.1 修改列表元素

    1 motorcycles = ['honda', 'yamaha', 'suzuki']
    2 print(motorcycles)
    3 motorcycles[0] = 'ducati'
    4 print(motorcycles)

    ①要修改列表元素,可指定列表名和要修改的元素的索引,再指定该元素的新值。如行3

    ②可以修改任何列表元素的值,而不仅仅是第一个元素的值。

    3.2.2 在列表中添加元素

    Python提供了多种在既有列表中添加新数据的方式。

    1. 在列表末尾添加元素

    1 motorcycles = ['honda', 'yamaha', 'suzuki']
    2 print(motorcycles)
    3 motorcycles.append('ducati')
    4 print(motorcycles)
    5 motorcycles = []
    6 motorcycles.append('honda')
    7 motorcycles.append('yamaha')
    8 motorcycles.append('suzuki')
    9 print(motorcycles)

    ①在列表中添加新元素时,最简单的方式是将元素附加到列表末尾

    ②方法 append() 将元素 添加到了列表末尾,而不影响列表中的其他所有元素。如行3

    ③方法 append() 让动态地创建列表易如反掌,如行5、6、7、8

    2. 在列表中插入元素

    1 motorcycles = ['honda', 'yamaha', 'suzuki']
    2 motorcycles.insert(0, 'ducati')
    3 print(motorcycles)

    ①方法 insert() 可在列表的任何位置添加新元素。但需要指定新元素的索引和值。如行2

    ②insert()使索引后的包括索引的每个元素都右移一个位置。

    3.2.3 从列表中删除元素

    1. 使用 del 语句删除元素

    1 motorcycles = ['honda', 'yamaha', 'suzuki']
    2 print(motorcycles)
    3 del motorcycles[0]
    4 print(motorcycles)
    5 motorcycles = ['honda', 'yamaha', 'suzuki']
    6 print(motorcycles)
    7 del motorcycles[1]
    8 print(motorcycles)

    ①删除已知位置的元素,可使用 del 语句。如行3、7

    ②使用 del 语句将值从列表中删除后,你就无法再访问它了。

    2. 使用方法 pop() 删除元素

    1 motorcycles = ['honda', 'yamaha', 'suzuki']
    2 print(motorcycles)
    3 poped_motorcycle = motorcycles.pop()
    4 print(motorcycles)
    5 print(poped_motorcycle)
    6 motorcycles = ['honda', 'yamaha', 'suzuki']
    7 last_owned = motorcycles.pop()
    8 print("The last motorcycle I owned was a " + last_owned.title() + ".")

    ①方法 pop() 可删除列表末尾的元素,并让你能够接着使用它。

    ②将方法 pop() 删除的元素储存到一个变量里,使我们可以使用它,通过使用变量。

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

    1 motorcycles = ['honda', 'yamaha', 'suzuki']
    2 first_owned = motorcycles.pop(0)
    3 print('The first motorcycle I owned was a ' + first_owned.title() + '.')

    ①可以使用 pop() 来删除列表中任何位置的元素,只需在括号中指定要删除的元素的索引即可。如行2

    ②当你使用 pop() 时,被弹出的元素就不再在列表中了。

    ③如果你不确定该使用 del 语句还是 pop() 方法,下面是一个简单的判断标准:

      如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用 del 语句;

      如果你要在删除元素后还能继续使用它,就使用方法 pop() 。

    4. 根据值删除元素

     1 motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
     2 print(motorcycles)
     3 motorcycles.remove('ducati')
     4 print(motorcycles)
     5 motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
     6 print(motorcycles)
     7 too_expensive = 'ducati'
     8 motorcycles.remove(too_expensive)
     9 print(motorcycles)
    10 print("
    A " + too_expensive.title() + "is too expensive for me")

    ①当不知道要从列表中删除的值所处的位置,只知道要删除的元素的值,可使用方法 remove() 。如行3

    ②方法 remove() 只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。你将在第7章学习如何这样做。

     1 #习题1

    嘉宾名单:如果你可以邀请任何人一起共进晚餐(无论是在世的还是故去的),你会邀请哪些人?请创建一个列表,其中包含至少 3个你想邀请的人;然后,使用这个列表打印消息,邀请这些人来与你共进晚餐。

     2 names = ['张**', '沈**', '赵**', '王**']
     3 question = ',能一起共进晚餐吗?'
     4 print(names[0] + question)
     5 print(names[1] + question)
     6 print(names[2] + question)
     7 print(names[3] + question)
     8 
     9 #练习2

    修改嘉宾名单:你刚得知有位嘉宾无法赴约,因此需要另外邀请一位嘉宾。

    以完成练习1时编写的程序为基础,在程序末尾添加一条 print 语句,指出哪位嘉宾无法赴约。

    修改嘉宾名单,将无法赴约的嘉宾的姓名替换为新邀请的嘉宾的姓名。

    再次打印一系列消息,向名单中的每位嘉宾发出邀请。

    10 names = ['张**', '沈**', '赵**', '王**']
    11 question = ',能一起共进晚餐吗?'
    12 print(names[0] + question)
    13 print(names[1] + question)
    14 print(names[2] + question)
    15 print(names[3] + question)
    16 print(names[1] + ",不能共进晚餐。")
    17 names[1] = '周**'
    18 print(names[0] + question)
    19 print(names[1] + question)
    20 print(names[2] + question)
    21 print(names[3] + question)
    22 
    23 #练习3

    添加嘉宾:你刚找到了一个更大的餐桌,可容纳更多的嘉宾。请想想你还想邀请哪三位嘉宾。

    以完成练习1或练习2时编写的程序为基础,在程序末尾添加一条 print 语句,指出你找到了一个更大的餐桌。

    使用 insert() 将一位新嘉宾添加到名单开头。

    使用 insert() 将另一位新嘉宾添加到名单中间。

    使用 append() 将最后一位新嘉宾添加到名单末尾。

    打印一系列消息,向名单中的每位嘉宾发出邀请。 

    24 names = ['张**', '沈**', '赵**', '王**']
    25 question = ',能一起共进晚餐吗?'
    26 print(names[0] + question)
    27 print(names[1] + question)
    28 print(names[2] + question)
    29 print(names[3] + question)
    30 print(names[1] + ",不能共进晚餐。")
    31 names[1] = '周**'
    32 print(names[0] + question)
    33 print(names[1] + question)
    34 print(names[2] + question)
    35 print(names[3] + question)
    36 print('我找到了一个更大的餐桌。')
    37 names.insert(0,'徐**')
    38 names.insert(2,'志玛**')
    39 names.append('钏**')
    40 print(names[0] + question)
    41 print(names[1] + question)
    42 print(names[2] + question)
    43 print(names[3] + question)
    44 print(names[4] + question)
    45 print(names[5] + question)
    46 print(names[6] + question)
    47 
    48 #练习4

    缩减名单:你刚得知新购买的餐桌无法及时送达,因此只能邀请两位嘉宾。

    以完成练习 3-6时编写的程序为基础,在程序末尾添加一行代码,打印一条你只能邀请两位嘉宾共进晚餐的消息。

    使用 pop() 不断地删除名单中的嘉宾,直到只有两位嘉宾为止。每次从名单中弹出一位嘉宾时,都打印一条消息,让该嘉宾知悉你很抱歉,无法邀请他来共进晚餐。

    对于余下的两位嘉宾中的每一位,都打印一条消息,指出他依然在受邀人之列。

    使用 del 将最后两位嘉宾从名单中删除,让名单变成空的。打印该名单,核实程序结束时名单确实是空的。


    49 names = ['张**', '沈**', '赵**', '王**'] 50 question = ',能一起共进晚餐吗?' 51 print(names[0] + question) 52 print(names[1] + question) 53 print(names[2] + question) 54 print(names[3] + question) 55 print(names[1] + ",不能共进晚餐。") 56 names[1] = '周**' 57 print(names[0] + question) 58 print(names[1] + question) 59 print(names[2] + question) 60 print(names[3] + question) 61 print('我找到了一个更大的餐桌。') 62 names.insert(0,'徐**') 63 names.insert(2,'志玛**') 64 names.append('钏**') 65 print(names[0] + question) 66 print(names[1] + question) 67 print(names[2] + question) 68 print(names[3] + question) 69 print(names[4] + question) 70 print(names[5] + question) 71 print(names[6] + question) 72 print('对不起,我只能邀请2位嘉宾了') 73 sorry_people = names.pop() 74 print(sorry_people + ",对不起,不能一起共进晚餐了!") 75 sorry_people = names.pop() 76 print(sorry_people + ",对不起,不能一起共进晚餐了!") 77 sorry_people = names.pop() 78 print(sorry_people + ",对不起,不能一起共进晚餐了!") 79 sorry_people = names.pop() 80 print(sorry_people + ",对不起,不能一起共进晚餐了!") 81 sorry_people = names.pop() 82 print(sorry_people + ",对不起,不能一起共进晚餐了!") 83 print(names[0] + ",最终仍能一起共进晚餐。") 84 print(names[1] + ",最终仍能一起共进晚餐。") 85 del names[0] 86 del names[0] 87 print(names)

    3.3 组织列表

    3.3.1 使用方法 sort() 对列表进行永久性排序

    1 cars = ['bmw', 'audi', 'toyota', 'subaru']
    2 cars.sort()
    3 print(cars)
    #['audi', 'bmw', 'subaru', 'toyota']
    4 cars = ['bmw', 'audi', 'toyota', 'subaru'] 5 cars.sort(reverse = Ture) 6 print(cars)
    #['toyota', 'subaru', 'bmw', 'audi']

    ①列表的 sort() 方法,能够对列表按字母顺序进行排序。如行2

    ②可以与字母顺序相反的顺序排列列表元素,向sort() 方法传递参数reverse=True 。如行5

    ③sort()仅改变列表顺序,并不会返回列表

    3.3.2 使用函数 sorted() 对列表进行临时排序

    1 cars = ['bmw', 'audi', 'toyota', 'subaru']
    2 print("Here is the original list:")
    3 print(cars)
    #Here is the original list:
    #['bmw', 'audi', 'toyota', 'subaru']
    4 print(" Here is the sorted list:") 5 print(sorted(cars))
    #Here is the sorted list:
    #['audi', 'bmw', 'subaru', 'toyota']
    6 print(" Here is the original list again:") 7 print(cars)
    #Here is the original list again:
    #['bmw', 'audi', 'toyota', 'subaru']

    ①函数sorted() 能够按特定顺序显示列表元素,同时不影响它们在列表中的原始排列顺序。如行5

    ②如果你要按与字母顺序相反的顺序显示列表,也可向函数 sorted() 传递参数 reverse=True

    3.3.3 倒着打印列表

    1 cars = ['bmw', 'audi', 'toyota', 'subaru']
    2 print(cars)
    #['bmw', 'audi', 'toyota', 'subaru']
    3 cars.reverse() 4 print(cars)
    #['subaru', 'toyota', 'audi', 'bmw']

    方法 reverse() 可以反转列表元素的排列顺序。

     reverse() 不是指按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排列顺序

    方法 reverse() 永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,为此只需对列表再次调用 reverse() 即可。

    3.3.4 确定列表的长度

    1 cars = ['bmw', 'audi', 'toyota', 'subaru']
    2 print(len(cars))
    #4

    ①使用函数 len() 可快速获悉列表的长度。

     1 #习题1
     2 """
     3 放眼世界:想出至少 5个你渴望去旅游的地方。
     4 将这些地方存储在一个列表中,并确保其中的元素不是按字母顺序排列的。
     5 按原始排列顺序打印该列表。不要考虑输出是否整洁的问题,只管打印原始Python列表。
     6 使用 sorted() 按字母顺序打印这个列表,同时不要修改它。
     7 再次打印该列表,核实排列顺序未变。
     8 使用 sorted() 按与字母顺序相反的顺序打印这个列表,同时不要修改它。
     9 再次打印该列表,核实排列顺序未变。
    10 使用 reverse() 修改列表元素的排列顺序。打印该列表,核实排列顺序确实变了。
    11 使用 reverse() 再次修改列表元素的排列顺序。打印该列表,核实已恢复到原来的排列顺序。
    12 使用 sort() 修改该列表,使其元素按字母顺序排列。打印该列表,核实排列顺序确实变了。
    13 使用 sort() 修改该列表,使其元素按与字母顺序相反的顺序排列。打印该列表,核实排列顺序确实变了。
    14 """
    15 travels = ['paris', 'greece', 'provence', 'london', 'tokyo']
    16 print(travels)
    17 print(sorted(travels))
    18 print(travels)
    19 print(sorted(travels,reverse=True))
    20 print(travels)
    21 travels.reverse()
    22 print(travels)
    23 travels.reverse()
    24 print(travels)
    25 travels.sort()
    26 print(travels)
    27 travels.sort(reverse=True)
    28 print(travels)
    29 
    30 #习题2
    31 #晚餐嘉宾:使用 len() 打印一条消息,指出你邀请了多少位嘉宾来与你共进晚餐。
    32 names = ['张**', '沈**', '赵**', '王**']
    33 print(len(names))
    34 #习题3
    35 """
    36 尝试使用各个函数:想想可存储到列表中的东西,如山岳、河流、国家、城市、语言或你喜欢的任何东西。
    37 编写一个程序,在其中创建一个包含这些元素的列表,然后,对于本章介绍的每个函数,都至少使用一次来处理这个列表。
    38 """
    39 citys = ['shanghai', 'hunan', 'tianjin', 'beijing']
    40 print(citys[1])
    41 print(citys[-1])
    42 print(citys[2].title() + ' is where I work.')
    43 citys[1] = 'hubei'
    44 print(citys)
    45 citys.append('hunan')
    46 print(citys)
    47 citys.insert(3,'shenzhen')
    48 print(citys)
    49 del citys[-1]
    50 print(citys)
    51 city = citys.pop()
    52 print(city)
    53 print(citys)
    54 city = citys.pop(1)
    55 print(city)
    56 print(citys)
    57 citys.remove('shenzhen')
    58 print(citys)
    59 citys.append('hunan')
    60 citys.append('shenzhen')
    61 citys.append('beijing')
    62 print(citys)
    63 citys.sort()
    64 print(citys)
    65 citys.sort(reverse=True)
    66 print(citys)
    67 print(sorted(citys))
    68 print(citys)
    69 print(sorted(citys,reverse=True))
    70 print(citys)
    71 citys.reverse()
    72 print(citys)
    73 print(len(citys))

    3.4 使用列表时避免索引错误

     1 motorcycles = ['honda', 'yamaha', 'suzuki']
     2 print(motorcycles[3])
     3 """
     4 Traceback (most recent call last):
     5   File "E:/python/代码/caogao.py", line 3, in <module>
     6     print(motorcycles[3])
     7 IndexError: list index out of range
     8 """
     9 print(motorcycles[-1])
    #suzuki
    10 motorcycles = [] 11 print(motorcycles[-1]) 12 """ 13 Traceback (most recent call last): 14 File "E:/python/代码/caogao.py", line 12, in <module> 15 print(motorcycles[-1]) 16 IndexError: list index out of range 17 """

    索引错误意味着Python无法理解你指定的索引。程序发生索引错误时,请尝试将你指定的索引减1,然后再次运行程序,看看结果是否正确。如行2

    仅当列表为空时,这种访问最后一个元素的方式才会导致错误。如行11

    发生索引错误却找不到解决办法时,请尝试将列表或其长度打印出来。列表可能与你以为的截然不同,在程序对其进行了动态处理时尤其如此。通过查看列表或其包含的元素数,可帮助你找出这种逻辑错误。

    3.5 小结

     

  • 相关阅读:
    微信公众号--JS-SDK
    微信公众号--网页授权
    微信公众号--资源请求
    微信公众号--相关资料
    微信公众号--消息回复
    一.小程序 --申请
    2017年总结
    SSM框架中常用的配置文件
    UML的9种图例解析
    23种设计模式汇总整理
  • 原文地址:https://www.cnblogs.com/yiyezhiqiu1/p/13516102.html
Copyright © 2011-2022 走看看