List(列表) 是 Python 中使用最频繁的数据类型。

列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。

列表是写在方括号 [ ] 之间、用逗号分隔开的元素列表。

和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。

列表(list)作为 Python 中最常用的数据类型之一,是一个可增加、删除元素的可变容器。

创建List

list1 = [] # 创建空的list

list2 = [1,'这是list集合',29.5,'121212']

list3 = [2,'abc',[1,2,3]]

基本操作

求 List 内元素的个数

len(list1) # 0

len(list2) # 4

len(list3) # 3

遍历 List 列表

for _ in list3:

print(f'{_}的类型为{type(_)}')

取出元素

print(list2[1])

增加元素

list3.append([2,4,6])

print(list3)

append 默认增加到 列表尾部。

在指定位置插入元素

list2.insert(2,[2,2,2,2])

print(list2);

在 list2 列表的索引为 2 的地方,插入一个另一个列表元素。

移除列表尾部元素

temp = list2.pop()

print(temp)

pop 方法返回的是 移除的那个元素本身。

移除指定元素

list2.remove('121212')

print(list2)

pop 只能移除列表尾部元素,要想移除其他元素,可以使用remove 方法。

深、浅拷贝

浅拷贝

首先定义有个列表,拿出其中的列表元素。

list1 = ['001','2019-11-11',['薇恩','乌兹']]

list2 = list1[2]

然后对 list2 进行修改,打印列表1 和列表2的值。

list2[1] = 'UZI'

print(list1)

print(list2)

发现 list1 中的元素也对应改变了,因为 list2 引用 list1 的第三个元素,所以 list1 也会相应改变。

如果不想改变 list1 的第三个元素,就需要复制出 list1 的这个元素:

list1 = ['001','2019-11-11',['薇恩','乌兹']]

list2_deep = list1[2].copy()

list2_deep[1] = 'UZI'

print(list1)

print(list2_deep)

此时,再对 list2_deep 操作,便不会影响 list1[2] 的值。

注意:

copy 函数,仅仅实现对内嵌对象的一层拷贝,属于 shallow copy(浅拷贝)

深拷贝

先看下面的代码

list = [1,2,[3,4,5]]

new_list = list.copy()

new_list[0] = 10

new_list[2][1] = 40

修改后,分别测试两个值的相等性。

print(list[0] == new_list[0]) // False

print(list[2][1] == new_list[2][1]) // True

第一个输出 False,证明实现了拷贝。

第二个输出 True,证明是浅拷贝,不是深拷贝。copy 只完成了一层 copy。

要想实现深拷贝,需要使用 copy 模块的 deepcopy 函数:

from copy import deepcopy

list = [1,2,[3,4,5]]

new_list = deepcopy(list)

new_list[0] = 10

new_list[2][1] = 40

print(list[0] == new_list[0]) // False

print(list[2][1] == new_list[2][1]) // False

打印结果,都为 False,证明内嵌的 List 列表也完成了复制。

切片

Java 和 C++ 中,访问数组中的元素只能一次一个,但 Python 增加切片功能为访问列表带来极大便利。利用内置函数 range(start,stop,step) 生成序列数据,并转为 List 类型。

a = list(range(1,20,3))

print(a)

# 输出结果:

[1, 4, 7, 10, 13, 16, 19]

a[:3] 获取列表 a 的前三个元素,返回: [1, 4, 7]

a[-1] 获取 a 的最后一个元素,返回: 19

a[:-1] 获取除最后一个元素的切片,返回: [1, 4, 7, 10, 13, 16]

a[1:5] 生成索引为 [1,5)(不包括索引 5),返回: [4, 7, 10, 13]

a[1:5:2] 生成索引 [1,5) ,步长为 2,返回: [4, 10]

a[::3] 生成索引 [0,len(a)) 步长为 3,返回: [1, 10, 19]

a[::-3] 生成逆向索引 [len(a),0) 步长为 3,返回: [19, 10, 1]

逆向:从列表最后一个元素访问到第一个元素的方向。

逆向列表:

首先定义函数

def reverse(list):

return list[::-1]

调用函数

ra = reverse(a)

print(ra)

# 输出结果

[19, 16, 13, 10, 7, 4, 1]

python列表对象相同_Python中的学习列表对象,List相关推荐

  1. python类和对象介绍_python中的类,对象,方法,属性等介绍

    注:这篇文章写得很好.加底纹的是我自己的理解 python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... 我们通过描述属性( ...

  2. python json dict对象使用_Python中:dict(或对象)与json之间的互相转化

    在Python语言中,json数据与dict字典以及对象之间的转化,是必不可少的操做.python 在Python中自带json库.经过import json导入.json 在json模块有2个方法, ...

  3. python列表方法图解_python中list(列表)的使用方法总结(图文)

    本篇文章给大家带来的内容是关于python中list(列表)的使用方法总结(图文),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.list(列表)是一种有序的集合,可以随时添加. ...

  4. python算法和数据结构_Python中的数据结构和算法

    python算法和数据结构 To 至 Leonardo da Vinci 达芬奇(Leonardo da Vinci) 介绍 (Introduction) The purpose of this ar ...

  5. [转载] 【Python】向json文件中追加新的对象

    参考链接: python json 13: 解析json文件中的多个json对象 [Python]向json文件中追加新的对象 def get_json(path, write_path): file ...

  6. python中的对象_Python中的变量、对象

    由于没时间系统学习下Python 只能见一个问题探究一个问题了 一.初级 - 对象 关于Python中的数据类型,今天重新认识了下.[参考] 首先,Python中,对象才有类型, 变量是没有类型的,它 ...

  7. python将多个列表合并_Python中多个列表与字典的合并方法

    Python中多个列表与字典的合并方法 1多列表的合并 1)a+=b a=['','',''] b = ['','',''] a += b print(a) >>>['','','' ...

  8. python 定义list长度_python中list列表的高级函数 python如何统计列表的长度

    在python的函数中,如何将列表list的一部分作为函比如定义个函数,想实现的功能就是将列表a的后半部分(['c','d'])传入后面paraTestList(a[2:])中,括号里面的a[2:]命 ...

  9. python 映射表结构_Python 中常见的数据结构:字典、映射和散列表

    在 Python 中,字典是核心数据结构.字典可以存储任意数量的对象,每个对象都由唯一的字典键标识. 字典通常也被称为映射.散列表.查找表或关联数组.字典能够高效查找.插入和删除任何与给定键关联的对象 ...

最新文章

  1. 发布我的第一个flex作品
  2. 画胖小人和瘦小人,建造者模式版本
  3. php artisan快捷命令
  4. 解决方案:加盐加密算法BCrypt
  5. JavaScript面试大全(二)
  6. Android-Apk插件化研究
  7. github leaf项目怎么用_这份GitHub上价值49K的SpringBoot2+Thymeleaf企业应用实战,真香...
  8. php后台登录页,后台登录页面模板源码
  9. 干货 | 京东云弹性伸缩功能实践
  10. python显示.arw相机原始数据,并保存为jpg
  11. 公众号精选评论点赞_十大和编辑精选:六月评论
  12. Rosalind: DNA核苷酸计数和DNA翻译成RNA
  13. Safari Extension 扩展插件中关于权限的二三事(例如设置权限、权限类型等)
  14. 面阵相机行业研究分析报告
  15. 华为P20无敌拍摄能力开放 如何即刻获得?
  16. 在几年后,程序员的薪资会一直这么高么?
  17. 移动端测试——移动端基础
  18. http服务器的实现
  19. [清华集训2014]奇数国
  20. uboot启动第一阶段——start.S(二)

热门文章

  1. wxWidgets:wxMoveEvent类用法
  2. wxWidgets:日志概述
  3. boost::math::tools::cohen_acceleration用法的测试程序
  4. boost::posix_time模块用时间构造和计算的一些简单例子
  5. GDCM:gdcm::SequenceOfFragments的测试程序
  6. Boost:由内部绑定的值返回的智能指针的测试程序
  7. VTK:Utilities之ShareCamera
  8. VTK:Remote之FrenetSerretFrameDemo
  9. Qt Creator连接QNX设备
  10. C语言在BST中找到最接近目标的值的算法(附完整源码)