Python——列表排序和赋值(二)

简介: Python——列表排序和赋值

(3)列表的赋值与复制

1.赋值:

new = ls,对象的引用


浅拷贝:

list.copy(),ls[:]拷贝父对象,不拷贝内部子对象

深拷贝:

copy.deepcopy(ls),完全拷贝父对象和子对象

赋值

将列表直接赋值给另一个变量时,不产生新对象

一个列表对象两个标签

ls = [1, 2, 3]
new = ls
ls.append(4)

2.1.png

拷贝父对象,不拷贝内部子对象

原列表父对象更新不影响新列表

原列表可变类型元素更新影响新列表

list.copy()

ls[:]

ls = [2, [22, 33], ('a', 'c')]
ls2 = ls.copy()# 浅复制ls.append(4)# 只改
变原列表
ls[1].append(44)# 同时改变两个列表

2.2.png

递归拷贝到底的叫深拷贝

拷贝结果完全独立于原对象

原列表可变类型元素更新不影响新列表

copy.deepcopy(ls)

ls = [2, [22, 33], ('a', 'c')]
ls2 = copy.deepcopy(ls)  # 深复制
ls.append(4)  # 只改变原列表
ls[1].append(44)  # 只改变原列表
print(ls2)
(4)推导式

推导式又称解析式

从一个序列构建另一个新序列

一种集成了变换和筛选功能的函数

列表推导式
[x表达式for x in 列表if 条件表达式]
字典推导式
集合推导式
{x表达式for x in 集合if 条件表达式}
{(k,v)表达式for k,vin 字典if 条件表达式}

[x表达式for x in 列表if 条件表达式]

[(x, y表达式) for x in 列表1 for y in 列表2 if 条件表达式]

根据一个列表中的每个元素通过某种运算或筛选得到另

外一系列新数据,创建一个新列表


[x表达式for x in 列表if 条件表达式]

列表中的每个元素通过某种运算或筛选得

到另外一系列新数据,创建一个新列表

squares = []
for x in range(10):
squares.append(x ** 2)  
squares = [x ** 2 ]
for x in range(10)

[x表达式for x in 列表if 条件表达式]

for 前面表达式或函数,if后面加筛选条件

ls = [-4, -2, 0, 4]
ls1 = [x * 2 for x in ls]
# 列表元素乘2 [-8, -4, 0, 8]
ls3 = [x ** 2 for x in ls if x < 0]
# 正数元素平方[16, 4]
ls2 = [abs(x) for x in ls]
# 用abs()函数推导[4, 2, 0, 4]
print(ls1)
print(ls2)
print(ls3)

2.3.png

[x表达式for x in 列表if 条件表达式]

for 前面可以是函数

def fun(x):
    return x + x ** 2 + x ** 3
z = [(i + 1, fun(i))
     for i in range(5)]
# 序号与函数值的组合
print(z)

2.4.png

水仙花数是指一个3 位数每位上的数字的3 次幂之和等于

他本身,例如:153 = 13+ 53+ 33,称153是水仙花数。

for num in range(100, 1000):
    if num == sum([int(i) ** 3
                   for i in str(num)]):
        print(num, end=' ')

2.5.png

相关文章
|
3月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
293 1
|
3月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
335 0
|
3月前
|
开发者 Python
Python列表推导式:优雅与效率的完美结合
Python列表推导式:优雅与效率的完美结合
441 116
|
3月前
|
大数据 开发者 Python
Python列表推导式:简洁与高效的艺术
Python列表推导式:简洁与高效的艺术
388 109
|
3月前
|
Python
Python列表推导式:简洁与高效的艺术
Python列表推导式:简洁与高效的艺术
468 119
|
3月前
|
Python
Python列表推导式:简洁与高效的艺术
Python列表推导式:简洁与高效的艺术
|
3月前
|
索引 Python
Python 列表切片赋值教程:掌握 “移花接木” 式列表修改技巧
本文通过生动的“嫁接”比喻,讲解Python列表切片赋值操作。切片可修改原列表内容,实现头部、尾部或中间元素替换,支持不等长赋值,灵活实现列表结构更新。
159 1
|
搜索推荐 算法 Python
使用 Python 实现几种常见的排序算法
排序是非常常见的算法,今天就来分享几种常见排序算法的 Python 实现
使用 Python 实现几种常见的排序算法
|
4月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
336 102
|
4月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
360 104

推荐镜像

更多