【精品分享】《Python编程从入门到实践》学习笔记——第三章 列表简介

本系列记录的是自己学习笔记,以及一些总结,并非照搬书本,道友可进行查漏补缺,与君共勉。

本系列文章传送门
第2章 变量和简单数据类型
第3章 列表简介
第4章 操作列表
第5章 if语句
第6章 字典          未完待续
第7章 while循环 未完待续
第8章 函数         未完待续
第9章 类            未完待续
第10章 文件和异常 未完待续
项目实战



列表是由一系列按特定顺序排列的元素组成。用方括号[]表示列表,用逗号分隔元素。
print(列表),输出结果是带中括号的。

3.1 访问列表

3.1.1 根据索引访问单个元素

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

# 输出结果(没有方括号和引号):
cannondale

此时输出了字符串cannondale,还可以利用第二章学到的对字符串操作:

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[1].title())  # 每个单词首字母大写

# 输出结果(没有方括号和引号)
Cannondale

特别解析
支持负数索引,-1最后一位,-2倒数第二位…

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

# 输出结果(没有方括号和引号)
specialized

3.1.2 根据切片访问多个元素

此时返回值仍然是列表。左闭右开区间

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

# 输出结果
['trek', 'cannondale']

3.2 增、删、改列表

3.2.1 添加列表元素

(一)在列表末尾添加元素——append()方法

append()方法只能在列表末尾添加单个元素。

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
addbicy = 'haluo'
bicycles.append(addbicy)
print(bicycles)

# 输出结果
['trek', 'cannondale', 'redline', 'specialized', 'haluo']

(二)在列表末尾添加元素——extend()方法

extend()方法可以在列表末尾添加多个元素,可以理解为两个列表合并。

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
addbicy = ['haluo','mobai']
bicycles.extend(['haluo','mobai'])
print(bicycles)

# 输出结果
['trek', 'cannondale', 'redline', 'specialized', 'haluo', 'mobai']

特别解析:
extend()方法通过在列表末尾追加可迭代对象中的元素来扩展列表。可迭代对象包括字符串、列表、元祖、字典。

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
bicycles.extend('haluo')
print(bicycles)

# 输出结果
['trek', 'cannondale', 'redline', 'specialized', 'h', 'a', 'l', 'u', 'o']

# 因为这里是将字符串'haluo'视为一个可迭代对象进行处理的。

(三)在列表中插入元素——insert()方法

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
bicycles.insert(1,'haluo')
print(bicycles)

# 输出结果
['trek', 'haluo', 'cannondale', 'redline', 'specialized']

3.2.2 删除列表元素

(一)使用del语句删除列表元素
del语句结合索引可以删除指定位置的元素; 如果不指定索引,将删除整个列表。
del语句删除元素,没有返回值,但会删除原列表的元素。

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

# 输出结果
['trek', 'cannondale', 'redline', 'specialized']

(二)使用pop()方法删除列表元素
pop()方法删除列表元素返回值为被删除的元素(称为“弹出”)。括号中不输入索引值,则默认删除最后一个,也可指定索引删除。

bicycles = ['trek', 'haluo', 'cannondale', 'redline', 'specialized']
bic = bicycles.pop()
print(bicycles)
print(bic)

# 输出结果
['trek', 'haluo', 'cannondale', 'redline']
specialized

特别解析:
删除列表元素如何选择使用del语句还是pop()方法?
答:如果你要从列表中删除一个元素,且不再以任何方式使用这个元素时,使用del语句;
如果你要在删除元素后继续使用这个元素,就使用pop()方法。

(三)根据元素值删除列表元素——remove()方法
remove()方法如果成功删除值则返回None;如果列表没有该值则报错list.remove(x): x not in list

bicycles = ['trek', 'haluo', 'cannondale', 'redline', 'specialized']
bic = bicycles.remove('haluo')
print(bicycles)
print(bic)

# 输出结果
['trek', 'cannondale', 'redline', 'specialized']
None

特别解析:
remove()方法只删除第一个指定的值,如果要删除的值在列表中多次出现,需要使用循环来判断是否删除了所有这样的值。
remove()方法删除所有相同的值有坑(由于删除元素后列表自动收缩,1. 每一次删除一个元素,列表的长度就会发生变化,越界坑;2. 元素的索引也会发生变化,漏删坑),要注意回避,具体后面单独出文章进行分析

# 删除列表中为1的元素
# 越界坑
nums = [1,5,3,1,1,3]
for i in range(len(nums)):
     if nums[i]==1:
          nums.remove(1)
print(nums)
# 输出报错:
IndexError: list index out of range


# for循环漏删坑
nums = [1,5,3,1,1,3]
for num in nums:
     if num == 1:
          nums.remove(num)
print(nums)
# 输出结果
[5, 3, 1, 3]
# 输出报错:
IndexError: list index out of range


# 正确写法1 ,利用for循环+range从后往前遍历
nums = [1,5,3,1,1,3]
for i in range(len(nums)-1,-1,-1):
     if nums[i]==1:
          nums.remove(1)
print(nums)
# 输出结果
[5, 3, 3]

# 正确写法2 ,利用while循环。
nums = [1,5,3,1,1,3]
while 1 in nums:
     nums.remove(1)
print(nums)
# 输出结果
[5, 3, 3]

# 正确写法3 ,利用列表解析式.(还有别的实现方法这里不列举了)
nums = [1,5,3,1,1,3]
nums = [num[i]  for i in range(0, len(nums)) if nums[i] != 1]
print(nums)
# 输出结果
[5, 3, 3]

3.2.3 修改列表

用索引指定要修改的元素,然后直接赋值。

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

# 输出结果
['trek', 'cannondale', 'red', 'specialized']

也可多个元素一起修改

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
bicycles[0:2] = ['tr','ca']
print(bicycles)

# 输出结果
['tr', 'ca', 'redline', 'specialized']

3.3 组织列表

Python提供了很多组织(排序)列表的方法

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

默认正序,如果需要倒序,向sort()方法传递参数 reverse=True.
sort()排序后原来的排列顺序无法恢复。
格式:
列表名称.sort()

# 正序
cars = ['bmw', 'audi', 'toyota', 'subaru','abdi','12345','ABDI','AB!#','!#']
cars.sort(reverse=True)
print(cars)

# 输出结果:
['!#', '12345', 'AB!#', 'ABDI', 'abdi', 'audi', 'bmw', 'subaru', 'toyota']
# 倒序
cars = ['bmw', 'audi', 'toyota', 'subaru','abdi','12345','ABDI','AB!#','!#']
cars.sort(reverse=True)
print(cars)

# 输出结果:
['toyota', 'subaru', 'bmw', 'audi', 'abdi', 'ABDI', 'AB!#', '12345', '!#']

特别解析
排序优先级:特殊字符 > 数字 > 大写字母 > 小写字母

3.3.2 对列表进行临时性排序——函数sorted()

默认正序,如果需要按相反顺序排列,需向sorted()函数传递参数 reverse=True.
函数sorted()排序后原来的排列顺序不变,临时性的。
格式:
sorted(列表名称)

# 正序
oldcars = ['bmw', 'audi', 'toyota', 'subaru','abdi','12345','ABDI','AB!#','!#']
newcars = sorted(cars)
print(oldcars)
print(newcars)

# 输出结果
['bmw', 'audi', 'toyota', 'subaru', 'abdi', '12345', 'ABDI', 'AB!#', '!#']
['!#', '12345', 'AB!#', 'ABDI', 'abdi', 'audi', 'bmw', 'subaru', 'toyota']
# 倒序
oldcars = ['bmw', 'audi', 'toyota', 'subaru','abdi','12345','ABDI','AB!#','!#']
newcars = sorted(cars,reverse=True)
print(oldcars)
print(newcars)

# 输出结果
['bmw', 'audi', 'toyota', 'subaru', 'abdi', '12345', 'ABDI', 'AB!#', '!#']
['toyota', 'subaru', 'bmw', 'audi', 'abdi', 'ABDI', 'AB!#', '12345', '!#']

3.3.3 反转列表顺序——方法reverse()

方法reverse()指的是反转列表元素的排列顺序,并且是永久性修改列表元素顺序。
格式:
列表名称.reverse()

cars = ['bmw', 'audi', 'toyota', 'subaru','abdi']
cars.reverse()
print(cars)

# 输出结果
['abdi', 'subaru', 'toyota', 'audi', 'bmw']

特别解析

  1. 方法的使用格式是:对象名称.方法();
  2. 函数的使用格式是:函数(对象名称);
  3. 函数len()可求列表的长度,返回元素个数。

如文章对您有帮助,感谢您的点赞+关注(^ _ ^)

福利:添加关注、评论区留言免费赠送自己学习资料

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值