Python 主线任务之列表和操作列表,知其然知其所以然【玩转Python】

主线任务

主线任务之数据类型已进行66.6%,今日主线任务为"列表和操作列表"的了解和掌握。了解"列表"是什么的同时也不要忽略"怎么用"。即"知其然知其所以然",方能达到学习的更优效果。

接下来让我们一起开启今日份的Python的主线任务。

数据类型

列表

介绍

列表由一系列按特定顺序排列的元素组成。

复制代码
word_list = ['i', 'love', 'python']
print(word_list)
>>> ['i', 'love', 'python']

笔记

使用列表中的各个值

使用f字符串根据列表中的值来创建消息。

复制代码
word_list = ['i', 'love', 'python']
msg=f"{word_list[0].title()} {word_list[1]} {word_list[2].title()}."
print(msg)
>>> I love Python.
在列表末尾添加元素

使用方法 append() 可以将元素'very'、'much'依次添加到列表末尾。

复制代码
word_list = ['i', 'love', 'python']
word_list.append('very')
word_list.append('much')
print(word_list)
>>> ['i', 'love', 'python', 'very', 'much']
在列表中任意位置插入元素

使用方法 insert() 可在列表的任何位置添加新元素。

insert() 包含两个入参:index (插入位置)和 element (插入元素)。

复制代码
word_list = ['i', 'love', 'python']
word_list.insert(1,'really')
print(word_list)
>>> ['i', 'really', 'love', 'python']
使用del语句删除任意位置元素

使用 del 语句,可以删除想要删除的确定位置的元素。

复制代码
word_list = ['i', 'just', 'love', 'python']
del word_list[1]
print(word_list)
>>> ['i', 'love', 'python']
使用方法 pop() 删除元素

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

复制代码
word_list = ['i', 'love', 'python', 'not relly']
word_pop = word_list.pop()
print(word_list)
>>> ['i', 'love', 'python']
print(word_pop)
>>> not relly

方法 **pop()**也可以删除列表中任意位置的元素,只需在圆括号中指定要删除元素的索引即可。

复制代码
word_list = ['i', 'just', 'love', 'python']
word_pop = word_list.pop(1)
print(word_list)
>>> ['i', 'love', 'python']
print(word_pop)
>>> just
根据值删除元素

方法 **remove()**可以根据要删除的元素的值删除对应元素。

复制代码
word_list = ['i', 'just', 'love', 'python']
word_list.remove('just')
print(word_list)
>>> ['i', 'love', 'python']

注意,对于不存的值,使用 remove() 进行删除会报错。

复制代码
word_list.remove('so')
>>> ValueError: list.remove(x): x not in list
使用方法 sort() 对列表永久排序

方法 sort() 可以对列表进行排序,从小到大,且是永久性地修改列表元素的排列顺序。

复制代码
sort_list = [2, 11, 8, 55, 6, 7, 23, 33, 5, 6]
sort_list.sort()
print(sort_list)
>>> [2, 5, 6, 6, 7, 8, 11, 23, 33, 55]

如果想得到从大到小排序,只需向 sort() 方法传递参数 reverse=True 即可。

复制代码
sort_list.sort(reverse=True)
>>> [55, 33, 23, 11, 8, 7, 6, 6, 5, 2]
使用函数 sorted() 对列表临时排序

方法 sorted() 可以实现特定顺序显示列表元素,即保留列表元素原来的排列顺序,同时以特定的顺序呈现它们。

复制代码
sort_list = [2, 11, 8, 55, 6, 7, 23, 33, 5, 6]
print(sorted(sort_list))
>>> [2, 5, 6, 6, 7, 8, 11, 23, 33, 55]
print(sort_list)
>>> [2, 11, 8, 55, 6, 7, 23, 33, 5, 6]
print(sort_list[1])
>>> 11

方法 sorted() 包括三个参数:

iterable:表示指定的序列;

key:可以自定义排序规则;

reverse:指定以升序(False,默认)还是降序(True)进行排序。

复制代码
word_list = ['i', 'love', 'python', 'so', 'much']
print(sorted(word_list, key=lambda x: len(x)))
>>> ['i', 'so', 'love', 'much', 'python']
倒着打印列表

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

复制代码
word_list = ['i', 'love', 'python']
word_list.reverse()
print(word_list)
>>> ['python', 'love', 'i']

如果还想恢复原来的列表顺序,只需要对列表再调用一次 reverse()

复制代码
word_list.reverse()
print(word_list)
>>> ['i', 'love', 'python']

练一练

练习3-4:嘉宾名单

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

复制代码
name_list = ['zhang san', 'shang ying yan', 'wang wu', 'ning zai chun', 'ning jie']
print("花径不曾缘客扫,蓬门今始为君开。")
print(f"欢迎,{name_list[1].title()}")
print(f"欢迎,{name_list[3].title()}")
print(f"欢迎,{name_list[4].title()}")
>>> 花径不曾缘客扫,蓬门今始为君开。
>>> 欢迎,Shang Ying Yan
>>> 欢迎,Ning Zai Chun
>>> 欢迎,Ning Jie
练习3-4:添加嘉宾

你刚找到了一个更大的餐桌,可容纳更多的嘉宾。向嘉宾名单中间位置和末尾分别添加一位嘉宾。

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

复制代码
name_list = ['zhang san', 'shang ying yan', 'wang wu', 'ning zai chun', 'ning jie']
name_list.insert(4,'lily')
name_list.append('chai popo')
print("花径不曾缘客扫,蓬门今始为君开。")
print(f"欢迎,{name_list[1].title()}")
print(f"欢迎,{name_list[3].title()}")
print(f"欢迎,{name_list[4].title()}")
print(f"欢迎,{name_list[5].title()}")
print(f"欢迎,{name_list[6].title()}")
>>> 花径不曾缘客扫,蓬门今始为君开。
>>> 欢迎,Shang Ying Yan
>>> 欢迎,Ning Zai Chun
>>> 欢迎,Lily
>>> 欢迎,Ning Jie
>>> 欢迎,Chai Popo

操作列表

笔记

遍历整个列表

使用 for 循环打印每一个好友的名字:

复制代码
name_list = ['lily', 'shang ying yan', 'chai paopao', 'ning zai chun', 'ning jie']

for name in name_list:
    print(name)
>>> lily
>>> shang ying yan
>>> chai paopao
>>> ning zai chun
>>> ning jie

注意,位于 for 语句后面且属于循环组成部分的代码行,一定要缩进。否则,会报错:

复制代码
for name in name_list:
print(name)
>>> IndentationError: expected an indented block
使用 range() 创建数字列表

函数 range() 可以生成一系列数,可以使用 for 循环进行打印。

复制代码
num_list_2 = range(1, 6)
for num2 in num_list_2:
    print(num2)
>>> 1
>>> 2
>>> 3
>>> 4
>>> 5

注意,使用 range() 方法生成的序列,包含开始的数字,但是不包含结尾的数字。

也可以通过索引得到对应的元素。

复制代码
print(num_list_2[0])
>>> 1

还有一种创建数字列表的方式,使用函数 list()range() 的结果直接转换为列表。

复制代码
num_list = list(range(1, 6))
print(num_list)
>>> [1, 2, 3, 4, 5]

我们再试一下循环:

复制代码
num_list = list(range(1, 6))
for num1 in num_list:
    print(num1)
>>> 1
>>> 2
>>> 3
>>> 4
>>> 5
range() 和 list() 的区别

对比一下二者的区别:

1、range() 生成的序列类型很固定必须是整数,**list()**则不需要。

复制代码
word_list = list('pyhon1')
print(word_list)
>>> ['p', 'y', 'h', 'o', 'n', '1']

2、 range() 函数还有第三个参数-step,可以实现间隔数列。

复制代码
num_list_2 = range(1, 11, 2)
print(list(num_list_2))
>>> [1, 3, 5, 7, 9]
对数字列表执行简单的统计计算
复制代码
num_list_2 = range(1, 11)
print(max(num_list_2))
>>> 10
print(min(num_list_2))
>>> 1
print(sum(num_list_2))
>>> 55
列表解析
复制代码
squares = [value**2 for value in range(1, 11)]
print(squares)
>>> [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

上面的代码中,首先生成了一个数列,然后循环数列得到每个元素 value,将 value 的值提供给计算平方值的表达式,最终得到所有值平方之后的数列。

练一练

练习4-7:3的倍数

创建一个列表,其中包含3~30能被3整除的数,再使用一个for循环将这个列表中的数打印出来。

复制代码
num_list = range(3, 31, 3)
for num in num_list:
    print(num)
>>> 3
>>> 6
>>> 9
>>> 12
>>> 15
>>> 18
>>> 21
>>> 24
>>> 27
>>> 30

练习4-9:立方解析

使用列表解析生成一个列表,其中包含前10个非0整数的立方。

复制代码
num_list = [(value ** 3) for value in range(1, 11)]
for num in num_list:
    print(num)
>>> 1
>>> 8
>>> 27
>>> 64
>>> 125
>>> 216
>>> 343
>>> 512
>>> 729
>>> 1000

总结

以上,就是我在 Python 学习中,记录的关于数据类型的知识点,同时对于部分练习题的作答。

此外,还增加了一些容易被忽视的功能点和对比,额外查了其他资料,通过一个点联想到相关点,这样一来加深了当前功能的印象。

读完本文的主要收获有:

1、对于列表,即学习了列表是什么以及如何使用其中的元素、如何定义列表以及如何增删元素、如何对列表进行排序,又学习了如何操作列表元素、如何遍历整个列、如何解析列表处理其中的元素。


作者介绍

非职业「传道授业解惑」的开发者叶一一。

《趣学前端》、《CSS畅想》等系列作者。华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。

如果看完文章有所收获,欢迎点赞👍 | 收藏⭐️ | 留言📝。

相关推荐
Zane19944 分钟前
ClassName() 只是一步?拆开看 __new__ 和 __init__ 各自在干什么
后端·python
曾阿伦13 分钟前
Trae CN Python环境调试debug指南
开发语言·python
渣男教父31 分钟前
Python游戏自动化实战案例
python·编程语言
天天爱吃肉82181 小时前
【工程师笔记|新能源整车电控一次过CISPR25/BCI,汽车EMC/EMI落地十大核心设计技巧】
大数据·人工智能·笔记·python·汽车
m0_617493941 小时前
Python 使用 cryptography 实现数据加密与解密
开发语言·python
万山寒1 小时前
python依赖包导出离线安装到没有外网的服务器
服务器·开发语言·python
怦怦蓝2 小时前
Windows 安装 Docker Desktop 踩坑完整实战指南(WSL2 故障排错实录)
windows·docker·容器
程序员雷欧2 小时前
LongAdder
开发语言·python
月光船幽幽2 小时前
分层阈值规避归藏协议过度重置
人工智能·python
SMF19192 小时前
【Linux】完美解决缩略图工具gm调用java.io.FileNotFoundException: gm问题
java·开发语言·python