python list相关知识
一、常用函数
1.1 获取长度
获取list长度使用len()
方法。
1.2 删除列表元素
删除某个元素有remove()
、pop()
、del()
三种方法。
remove()
删除首个符合条件的元素(单个元素),按值删除。
l=[1,2,3,4,5,2,6]
l.remove(2)
print(l)#[1, 3, 4, 5, 2, 6]
pop()
删除单个或多个元素,按位(索引)进行删除
l=[0,1,2,3,4,5,6]
print(l.pop(1))
print(l)# 1
# [0, 2, 3, 4, 5, 6]
del()
根据索引(元素所在位置)来删除
l=[1,2,3,4,5,2,6]
del(l[1])
print(l)# [1, 3, 4, 5, 2, 6]
删除指定范围内的值:
l=[1,2,3,4,5,2,6]
del(l[2:4])
print(l)# [1, 2, 5, 2, 6]
1.3 添加某个元素
在list中添加元素可以使用+
、+=
、append
三种方式
+
x=[1,2,3]
print(id(x))x=x+[4]
print(x)
print(id(x))#输出
140502569538496
[1, 2, 3, 4]
140502550908160
+=
x=[1,2,3]
print(id(x))x+=[4]
print(x)
print(id(x))#输出
140188572636160
[1, 2, 3, 4]
140188572636160
append
x=[1,2,3]
print(id(x))x.append(4)
print(x)
print(id(x))#输出
140627988521984
[1, 2, 3, 4]
140627988521984
可以观察到,append
、+=
操作不需要创建新对象(可以节省内存)
二、list的拷贝
1.1 非拷贝(直接赋值)
如果使用=
直接赋值,那么此时两个列表共享同一块内存空间,即修改其中任何一个列表都会影响另外一个。
1.2 浅拷贝
列表生成式
使用列表生成式产生新列表是一种浅拷贝方法,只对第一层实现深拷贝。
old=[1,[1,2,3],3]
new=[i for i in old]print('before')
print('old:',old)
print('new:',new)new[0]=3
new[1][0]=3print('after')
print('old:',old)
print('new:',new)
输出:
before
old: [1, [1, 2, 3], 3]
new: [1, [1, 2, 3], 3]
after
old: [1, [3, 2, 3], 3]
new: [3, [3, 2, 3], 3]
for循环遍历
通过for循环遍历,将元素一个一个添加到新list中,这同样是一个浅拷贝方法,只对第一层实现深拷贝
old=[1,[1,2,3],3]
new=[]
for i in range(len(old)):new.append(old[i])print('before')
print('old:',old)
print('new:',new)new[0]=3
new[1][0]=3print('after')
print('old:',old)
print('new:',new)
输出:
before
old: [1, [1, 2, 3], 3]
new: [1, [1, 2, 3], 3]
after
old: [1, [3, 2, 3], 3]
new: [3, [3, 2, 3], 3]
使用切片
使用[:]
进行切片,可以浅拷贝整个列表,同样的,只对第一层实现深拷贝:
old=[1,[1,2,3],3]
new=old[:]print('before')
print('old:',old)
print('new:',new)new[0]=3
new[1][0]=3print('after')
print('old:',old)
print('new:',new)
输出:
before
old: [1, [1, 2, 3], 3]
new: [1, [1, 2, 3], 3]
after
old: [1, [3, 2, 3], 3]
new: [3, [3, 2, 3], 3]
1.3 深拷贝
如果用deepcopy()方法,则无论多少层,无论怎样的形式,得到的列表都是和原来无关的,注意采用这种方式时需要import copy
import copy
old=[1,[1,2,3],3]
new=copy.deepcopy(old)print('before')
print('old:',old)
print('new:',new)new[0]=3
new[1][0]=3print('after')
print('old:',old)
print('new:',new)
输出:
before
old: [1, [1, 2, 3], 3]
new: [1, [1, 2, 3], 3]
after
old: [1, [1, 2, 3], 3]
new: [3, [3, 2, 3], 3]
python list相关知识相关推荐
- Python 语法相关知识
系统相关的信息模块: import sys sys.argv 是一个 list,包含所有的命令行参数. sys.stdout sys.stdin sys.stderr 分别表示标准输入输出,错误输出的 ...
- 二、python框架相关知识体系
Django框架 1.django框架.flask框架和Tornado框架的区别? django框架,内置组件多,自身功能强大,是一个大而全的框架,ORM.Admin.中间件.Form.ModelFr ...
- Appium+Python API相关知识了解
首先,要先了解,官方Appium API // https://testerhome.com/topics/3144 刚开始的时候,没有看官方API,然后在网上瞎找学习资料,发现python相关的很少 ...
- Python 脚本相关知识
一.python篇1 1.strip()方法 (1).strip() 方法用于移除字符串头尾指定的字符(默认为空格). str.strip([chars]); 参数:chars -- 移除字符串头尾指 ...
- python | 字典相关知识总结
什么是字典? 字典是Python语言中唯一的映射类型. 映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的关系,通常被认为是可变的哈希表. 字典对象是可变的,它是一个容器类型, ...
- python 迭代器相关知识
迭代器:iterator 可以被next()函数调用的,并不断返回下一个值的对像,称为迭代器. 迭代对象:iterable 可以直接被用作于for循环的对象,统称为可迭代对像. 转载于:https:/ ...
- Python基础语法知识3
文章目录 1.序: 2.输入函数input() 3.Python中的运算符 3.1 算术运算符 3.2 赋值运算符(=) 3.3 比较运算符 3.4 布尔运算符 3.5 位运算符中的左右运算符 1.序 ...
- 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸
类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...
- python实现单例模式的三种方式及相关知识解释
python实现单例模式的三种方式及相关知识解释 模块模式 装饰器模式 父类重写new继承 单例模式作为最常用的设计模式,在面试中很可能遇到要求手写.从最近的学习python的经验而言,singlet ...
- 【Python】元组和列表相关知识总结
python中,我们经常用到元组和列表,本文主要总结了一下元组和列表的一些基本用法. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
最新文章
- Express中间件--connect-mongodb-session
- LVS的DR工作模型解析
- apache-tomcat-6.0.39的配置
- VS2010编译错误:fatal error C1189: #error : This file requires _WIN32_WINNT to be #defined at least to 0x
- Android之mvp和mvc对比分析以及实际应用
- Python 调试工具 PDB(Linux 环境下调试)
- fernflower idea内置的反编译工具
- oracle 调用main方法,main方法中调用spring注入bean
- 计算机视觉—TensorFlow入门(5)
- 数据--第40课 - 图的定义
- linux 反汇编运行时代码段,linux内核学习之一 简单c语言反汇编(示例代码)
- 常用的可用性工程方法
- MySQL数据库与身份认证(鉴权)学习、复习笔记
- Expression:vector subscript out of range
- CodeForces 1037E Trips(瞎搞)
- 运维python要掌握到什么程度_《运》字意思读音、组词解释及笔画数 - 新华字典 - 911查询...
- 快速查看电脑内存型号方法
- 电子计算机开关及清屏键,计算机清屏键是什么
- Java中文与Base64互转(解决中文乱码的问题)
- vue 移动端拨打电话