一、常用函数

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相关知识相关推荐

  1. Python 语法相关知识

    系统相关的信息模块: import sys sys.argv 是一个 list,包含所有的命令行参数. sys.stdout sys.stdin sys.stderr 分别表示标准输入输出,错误输出的 ...

  2. 二、python框架相关知识体系

    Django框架 1.django框架.flask框架和Tornado框架的区别? django框架,内置组件多,自身功能强大,是一个大而全的框架,ORM.Admin.中间件.Form.ModelFr ...

  3. Appium+Python API相关知识了解

    首先,要先了解,官方Appium API // https://testerhome.com/topics/3144 刚开始的时候,没有看官方API,然后在网上瞎找学习资料,发现python相关的很少 ...

  4. Python 脚本相关知识

    一.python篇1 1.strip()方法 (1).strip() 方法用于移除字符串头尾指定的字符(默认为空格). str.strip([chars]); 参数:chars -- 移除字符串头尾指 ...

  5. python | 字典相关知识总结

    什么是字典? 字典是Python语言中唯一的映射类型. 映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的关系,通常被认为是可变的哈希表. 字典对象是可变的,它是一个容器类型, ...

  6. python 迭代器相关知识

    迭代器:iterator 可以被next()函数调用的,并不断返回下一个值的对像,称为迭代器. 迭代对象:iterable 可以直接被用作于for循环的对象,统称为可迭代对像. 转载于:https:/ ...

  7. Python基础语法知识3

    文章目录 1.序: 2.输入函数input() 3.Python中的运算符 3.1 算术运算符 3.2 赋值运算符(=) 3.3 比较运算符 3.4 布尔运算符 3.5 位运算符中的左右运算符 1.序 ...

  8. 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸

    类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...

  9. python实现单例模式的三种方式及相关知识解释

    python实现单例模式的三种方式及相关知识解释 模块模式 装饰器模式 父类重写new继承 单例模式作为最常用的设计模式,在面试中很可能遇到要求手写.从最近的学习python的经验而言,singlet ...

  10. 【Python】元组和列表相关知识总结

    python中,我们经常用到元组和列表,本文主要总结了一下元组和列表的一些基本用法. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

最新文章

  1. Express中间件--connect-mongodb-session
  2. LVS的DR工作模型解析
  3. apache-tomcat-6.0.39的配置
  4. VS2010编译错误:fatal error C1189: #error : This file requires _WIN32_WINNT to be #defined at least to 0x
  5. Android之mvp和mvc对比分析以及实际应用
  6. Python 调试工具 PDB(Linux 环境下调试)
  7. fernflower idea内置的反编译工具
  8. oracle 调用main方法,main方法中调用spring注入bean
  9. 计算机视觉—TensorFlow入门(5)
  10. 数据--第40课 - 图的定义
  11. linux 反汇编运行时代码段,linux内核学习之一 简单c语言反汇编(示例代码)
  12. 常用的可用性工程方法
  13. MySQL数据库与身份认证(鉴权)学习、复习笔记
  14. Expression:vector subscript out of range
  15. CodeForces 1037E Trips(瞎搞)
  16. 运维python要掌握到什么程度_《运》字意思读音、组词解释及笔画数 - 新华字典 - 911查询...
  17. 快速查看电脑内存型号方法
  18. 电子计算机开关及清屏键,计算机清屏键是什么
  19. Java中文与Base64互转(解决中文乱码的问题)
  20. vue 移动端拨打电话

热门文章

  1. 教务管理系统C++全部代码
  2. PHP实现完全二叉树
  3. PHP开启输出错误信息
  4. 找出单身狗java_Java单身狗 —— 单例模式
  5. 实习踩坑之路:快速失败:使用stream流便利集合的时候删除了对象,导致抛错Null
  6. 你不知道的Bitmap
  7. 利用并查集+贪心解决 Hdu1232
  8. 用c 语言创建web项目,使用Maven创建Web应用程序项目
  9. 性能测试---性能指标【1】
  10. java前端 js弹出框_前端js弹出框组件使用方法