列表推导式的使用与练习 | 手把手教你入门Python之三十五

简介: 本节重点介绍列表推导式,列表的复制

上一篇:列表嵌套 | 手把手教你入门Python之三十四
下一篇:元组的基本使用和字典的增删改查 | 手把手教你入门Python之三十六

本文来自于千锋教育在阿里云开发者社区学习中心上线课程《Python入门2020最新大课》,主讲人姜伟。

列表推导式

所谓的列表推导式,就是指的轻量级循环创建列表

1. 基本的⽅式

image.png

2. 在循环的过程中使⽤if

image.png

3. 2个for循环

image.png

4. 3个for循环

image.png

image.png

练习

请写出⼀段 Python 代码实现分组⼀个 list ⾥⾯的元素,⽐如 [1,2,3,...100]变成 [[1,2,3],[4,5,6]....]
参考答案:

a = [x for x in range(1,101)]
b = [a[x:x+3] for x in range(0,len(a),3)]

练习参考

image.png

列表的复制

查看以下代码,说出打印的结果。

a = 12
b = a
b = 13
print(b)
print(a)
nums1 = [1, 5, 8, 9, 10, 12]
nums2 = nums1
nums2[0] = 100
print(nums2)
print(nums1)

思考:

  1. 为什么修改了 nums2⾥的数据,nums1的数据也会改变?
    Python中的赋值运算都是引⽤(即内存地址)的传递。对于可变类型来说,修改原数据的值,会改变赋值

对象的值。

  1. 怎样nums1和nums2变成两个相互独⽴不受影响的列表?
    使⽤列表的 copy ⽅法,或者 copy 模块就可以赋值一个列表。

列表的copy⽅法

使⽤列表的copy⽅法,可以直接将原来的列表进⾏复制,变成⼀个新的列表,这种复制⽅式是浅复制。

nums1 = [1, 5, 8, 9, 10, 12]
nums2 = nums1.copy() # 调⽤列表的copy⽅法,可以复制出⼀个新的列表
nums2[0] = 100
# 修改新列表⾥的数据,不会影响到原有列表⾥的数据
print(nums2)
print(nums1)

copy模块的使⽤

除了使⽤列表的copy⽅法以外,Python还提供了copy模块来复制⼀个对象。copy模块提供了浅复制和深复制两种⽅式,它们的使⽤⽅式相同,但是执⾏的效果有⼀定的差异。

浅拷⻉

浅拷⻉是对于⼀个对象的顶层拷⻉,通俗的理解是:拷⻉了引⽤,并没有拷⻉内容。

import copy
words1 = ['hello', 'good', ['yes', 'ok'], 'bad']
# 浅拷⻉只会拷⻉最外层的对象,⾥⾯的数据不会拷⻉,⽽是直接指向
words2 = copy.copy(words1)
words2[0] = '你好'
words2[2][0] = 'no'
print(words1) # ['hello', 'good', ['no', 'ok'], 'bad']
# wrods2 ⾥的 yes 被修改成了 no
print(words2) # ['你好', 'good', ['no', 'ok'], 'bad']

image.png

深拷⻉

深拷⻉是对于⼀个对象所有层次的递归拷⻉。

import copy
words1 = ['hello', 'good', ['yes', 'ok'], 'bad']
# 深拷⻉会将对象⾥的所有数据都进⾏拷⻉
words2 = copy.deepcopy(words1)
words2[0] = '你好'
words2[2][0] = 'no'
print(words1) # ['hello', 'good', ['yes', 'ok'], 'bad']
print(words2) # ['你好', 'good', ['no', 'ok'], 'bad']

image.png
image.png

切⽚

列表和字符串⼀样,也⽀持切⽚,切⽚其实就是⼀种浅拷⻉。

words1 = ['hello', 'good', ['yes', 'ok'], 'bad']
words2 = words1[:]
words2[0] = '你好'
words2[2][0] = 'no'
print(words1) # ['hello', 'good', ['no', 'ok'], 'bad']
print(words2) # ['你好', 'good', ['no', 'ok'], 'bad']
相关文章
|
26天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
9天前
|
索引 Python
Python列表
Python列表。
38 8
|
12天前
|
C语言 Python
[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words
本文介绍了Python的关键字列表及其使用规则。通过回顾`hello world`示例,解释了Python中的标识符命名规则,并探讨了关键字如`if`、`for`、`in`等不能作为变量名的原因。最后,通过`import keyword`和`print(keyword.kwlist)`展示了Python的所有关键字,并总结了关键字不能用作标识符的规则。
26 9
|
20天前
|
数据挖掘 大数据 数据处理
python--列表list切分(超详细)
通过这些思维导图和分析说明表,您可以更直观地理解Python列表切分的概念、用法和实际应用。希望本文能帮助您更高效地使用Python进行数据处理和分析。
44 14
|
22天前
|
数据挖掘 大数据 数据处理
python--列表list切分(超详细)
通过这些思维导图和分析说明表,您可以更直观地理解Python列表切分的概念、用法和实际应用。希望本文能帮助您更高效地使用Python进行数据处理和分析。
32 10
|
26天前
|
测试技术 开发者 Python
探索Python中的装饰器:从入门到实践
装饰器,在Python中是一块强大的语法糖,它允许我们在不修改原函数代码的情况下增加额外的功能。本文将通过简单易懂的语言和实例,带你一步步了解装饰器的基本概念、使用方法以及如何自定义装饰器。我们还将探讨装饰器在实战中的应用,让你能够在实际编程中灵活运用这一技术。
38 7
|
3月前
|
存储 安全 Serverless
Python学习四:流程控制语句(if-else、while、for),高级数据类型(字符串、列表、元组、字典)的操作
这篇文章主要介绍了Python中的流程控制语句(包括if-else、while、for循环)和高级数据类型(字符串、列表、元组、字典)的操作。
47 0
|
3月前
|
存储 JSON 数据处理
分析、总结Python使用列表、元组、字典的场景
分析、总结Python使用列表、元组、字典的场景
37 0
|
3月前
|
存储 自然语言处理 Java
【Python】列表和元组
【Python】列表和元组
26 0
|
3月前
|
Python
Python操作:字符串--列表--元组--字典--运算符 (一)
Python操作:字符串--列表--元组--字典--运算符 (一)
23 0