Python基本语法 -- 第 3 章 列表简介

《Python编程:从入门到实践 - Eric Matthes》—— 笔记



第 3 章 列表简介

3.1 列表是什么

  • 列表由一系列按特定顺序排列的元素组成
  • 用方括号([])来表示列表
  • 用逗号来分隔其中的元素
if __name__ == '__main__':
    bicycles = ['trek', 'cannondale', 'redline', 'specialized']
    print(bicycles)
    
# 运行结果     
['trek', 'cannondale', 'redline', 'specialized']    

3.1.1 访问列表元素

if __name__ == '__main__':
    bicycles = ['trek', 'cannondale', 'redline', 'specialized']
    print(bicycles[0])
    print(bicycles[0].title()) # 可使用方法title()让元素'trek'的格式更整洁
    
# 运行结果   
trek
Trek

3.1.2 索引从 0 而不是 1 开始

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

if __name__ == '__main__':
    bicycles = ['trek', 'cannondale', 'redline', 'specialized']
    print(bicycles[-1])
    
# 运行结果       
specialized    
例如,索引-2返回倒数第二个列表元素,索引-3返回倒数第三个列表元素,以此类推。

3.1.3 使用列表中的各个值


3.2 修改、添加和删除元素

3.2.1 修改列表元素

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

if __name__ == '__main__':
    motorcycles = ['honda', 'yamaha', 'suzuki']
    print(motorcycles)
    motorcycles[0] = 'ducati'
    print(motorcycles)
    
# 运行结果   
['honda', 'yamaha', 'suzuki']
['ducati', 'yamaha', 'suzuki']    

3.2.2 在列表中添加元素

if __name__ == '__main__':
    motorcycles = ['honda', 'yamaha', 'suzuki']
    print(motorcycles)
    motorcycles.append('ducati') # 在列表末尾添加元素
    print(motorcycles)
    motorcycles.insert(0, 'ducati') # 在列表中插入元素
    print(motorcycles) 
    
# 运行结果  
['honda', 'yamaha', 'suzuki']
['honda', 'yamaha', 'suzuki', 'ducati']
['ducati', 'honda', 'yamaha', 'suzuki', 'ducati']
因为经常要等程序运行后,你才知道用户要在程序中存储哪些数据。为控制用户,可首先创建一个空列表,用于存储用户将要输入的值,然后将用户提供的每个新值附加到列表中。

3.2.3 从列表中删除元素

(1)使用del语句删除元素(知道要删除的元素在列表中的位置)
(2)使用方法pop()删除元素(列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素)

例如,你可能需要获取刚被射杀的外星人的x和y坐标,以便在相应的位置显示爆炸效果;在Web应用程序中,你可能要将用户从活跃成员列表中删除,并将其加入到非活跃成员列表中。

(3)使用pop()来删除列表中任何位置的元素
(4)使用remove()根据值删除元素

注意:方法remove()只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。
if __name__ == '__main__':
    motorcycles = ['honda', 'yamaha', 'suzuki','apple','ducati','banner','hulala']
    print('(0)')
    print(motorcycles)
    del motorcycles[0] # (1)使用del语句删除元素(知道要删除的元素在列表中的位置)
    print('(1)')
    print(motorcycles)
    popped_motorcycle = motorcycles.pop() # (2)使用方法pop()删除元素(列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素)
    print('(2)')
    print(motorcycles)
    print(popped_motorcycle)
    first_owned = motorcycles.pop(0) # (3)使用pop()来删除列表中任何位置的元素
    print('(3)')
    print(popped_motorcycle)
    print('The first motorcycle I owned was a ' + first_owned.title() + '.')
    motorcycles.remove('ducati') # (4)使用remove()根据值删除元素
    print('(4)')
    print(motorcycles)
    
# 运行结果     0['honda', 'yamaha', 'suzuki', 'apple', 'ducati', 'banner', 'hulala']1['yamaha', 'suzuki', 'apple', 'ducati', 'banner', 'hulala']2['yamaha', 'suzuki', 'apple', 'ducati', 'banner']
hulala
(3)
hulala
The first motorcycle I owned was a Yamaha.4['suzuki', 'apple', 'banner']    

3.3 组织列表

经常需要以特定的顺序呈现信息。有时候,希望保留列表元素最初的排列顺序,而有时候又需要调整排列顺序。

   3.3.1 使用方法 sort()对列表进行永久性排序
   3.3.2 使用函数 sorted()对列表进行临时排序
   3.3.3 使用函数reverse()倒着打印列表

只需对列表再次调用reverse()即可随时恢复到原来的排列顺序。
if __name__ == '__main__':
    carsa = ['bmw', 'audi', 'toyota', 'subaru']
    print('(1)')
    carsa.sort() # (1)使用方法sort()对列表进行永久性按字母顺序排列
    print(carsa)
    print('(2)')
    carsa.sort(reverse=True) # (2)使用reverse=True对列表进行永久性按与字母顺序相反的顺序排列
    print(carsa)
    print('(3)(4)')
    carsb = ['bmw', 'audi', 'toyota', 'subaru']
    print(sorted(carsb)) # (3)使用函数sorted()对列表进行临时排序
    print(sorted(carsb, reverse=True)) # (4)使用reverse=True对列表进行临时性按与字母顺序相反的顺序排列
    print(carsb)
    print('(5)')
    carsb.reverse() # (5)反转列表元素的排列顺序
    print(carsb)
    
# 运行结果     
(1)
['audi', 'bmw', 'subaru', 'toyota']
(2)
['toyota', 'subaru', 'bmw', 'audi']
(3)(4)
['audi', 'bmw', 'subaru', 'toyota']
['toyota', 'subaru', 'bmw', 'audi']
['bmw', 'audi', 'toyota', 'subaru']
(5)
['subaru', 'toyota', 'audi', 'bmw']

3.3.4 确定列表的长度

(1)使用函数len()可获得列表的长度

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


3.5 小结

在本章中,你学习了:

  • 列表是什么;
  • 如何使用列表中的元素;
  • 如何定义列表以及如何增删元素;
  • 如何对列表进行永久性排序;
  • 如何为展示列表而进行临时排序;
  • 如何确定列表的长度;
  • 使用列表时如何避免索引错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值