Python:数据类型list的基本操作,list嵌套数组简述

2023-11-08

转自:北京图灵学院刘大拿
https://study.163.com/course/introduction.htm?courseId=1004987028

后续补充来源:Python-廖雪峰
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014316724772904521142196b74a3f8abf93d8e97c6ee6000

python中有四种数据结构

  • 列表:list = [1,2,3, 4,’one’,‘two’]
  • 字典:dict = {‘a’:123,’b’:’something’}
  • 集合:set = {‘apple’,’pear’,’apple’}
  • 元组: tuple =(123,456,’hello‘)

这里总结一下list的一些基本操作,首先是关于列表的创建。

# 1. 创建空列表
l1 = []
# type是内置函数,负责打印出变量的类型
print(type(l1))
print(l1)

# 2. 创建带值的列表
l2 = [100]
print(type(l2))
print(l2)

# 3. 创建列表,带多个值
l3 = [2,3,1,4,6,4,6]
print(type(l3))
print(l3)

# 4. 使用list()
l4 = list()
print(type(l4))
print(l4)

<class 'list'>
[]
<class 'list'>
[100]
<class 'list'>
[2, 3, 1, 4, 6, 4, 6]
<class 'list'>
[]

列表常用操作

  • 访问
    • 使用下标操作(索引)
    • 列表的位置是从0开始
  • 分片操作
    • 对列表进行任意一段的截取
    • list[x:x]
下标访问列表示例
#列表中元素的顺序从左到右,从0开始计数
l = [3,2,1,4,6,3,2]
print(l[3])#输入数字位置直接打印出该数字
print(l[0])

4
3
分片操作示例

对列表进行分片时,它所定义的范围为[x:x),其包含左边的下标值,不包含右边的下标值,属于半开半闭区间

l = [3,2,1,4,6,3,2]
# 注意分片所截取的范围
print(l[1:4])
# 下标值可以为空,如果不写,左边下标值默认为0, 右边下标值为最大数加1,即表示截取到最后一个数据
print(l[:])#打印列表所有元素
print(l[:4])#打印第5号位置前所有元素(不包含第5号元素)
print(l[2:])#打印第3号位置后所有元素(包含第3号元素)

[2, 1, 4]
[3, 2, 1, 4, 6, 3, 2]
[3, 2, 1, 4]
[1, 4, 6, 3, 2]

对列表进行分片操作时,它选定元素的增长幅度是可以定义的,其格式为list(左区间:右区间:增长幅度)

l=[1,2,3,4,5,6,7,8]
# 分片可以控制增长幅度,默认增长幅度为1
print(l[1:6:1])

[2, 3, 4, 5, 6]

# 打印从下标1开始的数字,每次隔一个
print(l[1:6:2])

[2, 4, 6]

# 下标可以超出范围,超出后不在考虑多余下标内容
print(l[2:10])

[3, 4, 5, 6, 7, 8]

# 下标值,增长幅度可以为负数
# 为负数,表明顺序是从右往左,并且起始值是-1
# 规定: 数组最后一个数字的下标是-1

分片之负数下标

对列表进行切片操作时,其增长幅度可以为负数,当为负数时,列表中所有元素的位置计算顺序为从右往左,并且起始位置值为-1

l=(1,2,3,4,5,6,7,8,9)
print(l)
#下面打印显示的为空,因为默认分片总是从左向右截取。
print(l[-2:-4])
print(l[-4:-2])#正常情况,分片左边的值一定小于右边的值

# 如果分片时一定要左边值比右边大,则步长参数需要使用负数
# 此案例为一个list直接正反颠倒提供了一种思路
print(l[-2:-4:-1])
print(l[-3:-5:-1])

(1, 2, 3, 4, 5, 6, 7, 8, 9)
()
(6, 7)
(8, 7)
(7, 6)

分片操作是生成一个新的list

内置函数id(),其功能为显示一个变量或者数据的唯一确定编号

# id函数举例
a = 100
b = 200
print(id(a))
print(id(b))

c = a
print(id(c))

# 如果a跟c只想一份数据,则更改a的值同样也会更改c的值
# 但是,显示结果并非如此,为什么?
a = 101
print(a)
print(c)

93941189949760
93941189952960
93941189949760
101
100
# 通过id可以直接判断出分片是从新生成了一份数据还是使用的同一份数据
l = [3,4,56,76,32,21,43,5]
ll = l[:]
lll = ll
# 如果两个id值一样,则表明分片产生的列表是使用的同一地址同一份数据
# 否则,则表明分片是从新生成了一份数据,即一个新的列表,然后把数值拷贝到新列表中
print(id(l))
print(id(ll))
print(id(lll))

# 通过id知道,ll和lll是同一份数据,验证代码如下
l[1] = 100
print(l)
print(ll)

ll[1] = 100
print(ll)
print(lll)


140226763582408
140226318124808
140226318124808
[3, 100, 56, 76, 32, 21, 43, 5]
[3, 4, 56, 76, 32, 21, 43, 5]
[3, 100, 56, 76, 32, 21, 43, 5]
[3, 100, 56, 76, 32, 21, 43, 5]
list里面的元素的数据类型也可以不同,比如:
 L = ['Apple', 123, True]

list里可以包含另外的list,比如:

s = ['python', 'java', ['asp', 'php'], 'scheme']
len(s)

4

要注意list:s中只有4个元素,其中s[2]又是一个list,如果拆开写就更容易理解了:

p = ['asp', 'php']
s = ['python', 'java', p, 'scheme']

如果想要拿到 php 可以写p[1]或者s[2][1],因此 s 可以看成是一个二维数组,类似的还有三维、四维……数组,不过很少用到。

如果一个list中一个元素也没有,就是一个空的list,它的长度为0:
L = []
len(L)

0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:数据类型list的基本操作,list嵌套数组简述 的相关文章

随机推荐

  • 五个方向告诉你如何运营好一个公众号!

    来源 新媒之家 内容运营到底要怎么做呢 本文作者结合经验从选题 内容 编辑 目的 传播五个方面浅谈了内容运营应该如何做 希望对你有所帮助 运营一个公众号很简单 但运营好公众号却太难 好与坏的评判关键在于内容 内容越优质 用户粘性自然越强 口
  • “拍领导马屁,升职加薪无戏”

    在知乎上看到这样一个提问 怎么现在的年轻人都不愿意讨好领导了 看完我忍不住笑了 我刚入职场那会儿 总能看到 前辈 透露给年轻人一些职场潜规则 不懂揽活讨好领导 没有进取心 多分给你杂务 那是领导考验你 要学会忍耐 这些 经验 拿到现在 受到
  • ImportError: cannot import name 'ImmutableDict' from 'werkzeug'

    ImportError cannot import name ImmutableDict from werkzeug 当出现这个错的时候 可以使用下面这个命令降级安装就可以了 pip install upgrade werkzeug 0 1
  • C++算法之递归

    在函数内部直接或间接调用自身的程序定义为递归定义 递归可以解决一些问题 如遍历树和搜索算法等问题 递归通常把一个大型复杂的问题转化为一个规模较小的问题来求解 大大减少了程序的代码量 下面会介绍递归 目录 1 条件 2 例 3 例题 3 1
  • 慢sql优化

    SQL 优化一般步骤 通过慢查日志等定位那些执行效率较低的 SQL 语句 explain 分析SQL的执行计划 需要重点关注 type rows filtered extra type 由上至下 效率越来越高 ALL 全表扫描 index
  • STM32F103ZET6【HAL函开发】--安装STM32CUBEMX

    安装STM32CUBEMX大概可以分成三步 1 安装JRE 因为 STM32CubeMX是运行在Java环境下的 所以需要按照JRE Java Runtime Environment 2 安装STM32CubeMX 3 安装HAL库 可以选
  • rk3288 6222b 模组调试 (rtl8822cs)--wifi

    rtl8822cs 模块 wifi调试 记录 任务 在rk3288 android7 1 上移植配置 rtl8822cs 的wifi模块 思路 将厂商给的 wifi 驱动换上 并在 内核中 修改对应 makefile 和 Kconfig 以
  • Chasedb1--视网膜血管分割数据集

    Overview Chasedb1 是一个轻量的用于视网膜血管分割的图像数据集 其用于识别和自动分类关键的视网膜特征 分析视网膜血管形态与视网膜及全身性疾病的关系 以便在疾病处于早期阶段时得到及时检测和治疗 Data Explore 从云盘
  • 永磁同步电机矢量控制(九)——三闭环位置控制系统

    恰饭一下 已经过了工作的年纪 在这里稍微出一下自己做的一套永磁同步电机的教程 为了解决电机控制入门难的问题 我将自己从一知半解到现在的学习记录整理成十个部分学习教程 从基础的矢量控制 到应用性较强的MTPA 弱磁控制等 最后深入到无速度传感
  • k8s初级实战13--资源限制

    k8s初级实战13 资源限制 1 介绍 2 资源限制用法 2 1 内存限制 2 2 cpu限制 2 3 命名空间配额 2 4 pv容量限制 3 注意事项 4 说明 1 介绍 k8s 中常见的资源限制包括 内存 cpu pv容量 pod数量等
  • C# Lock锁

    lock 关键字可以用来确保代码块完成运行 而不会被其他线程中断 它可以把一段代码定义为互斥段 critical section 互斥段在一个时刻内只允许一个线程进入执行 而其他线程必须等待 这是通过在代码块运行期间为给定对象获取互斥锁来实
  • 如何安装nvm(nvm 安装教程)

    如何安装nvm nvm 安装教程 一 nvm是什么 nvm是一个node的版本管理工具 可以简单操作node版本的切换 安装 查看等等 与npm不同的是 npm是依赖包的管理工具 二 安装nvm 1 nvm下载地址 https github
  • NDk AndRoid

    史上最全系列之开发环境搭建之NDK 2 作者 sk 更新于 06月01日访问 3432 评论 29 前言 由于Monica 小MM 一篇 史上最全Android开发环境搭建 一下子就包含了jdk android sdk ADT 等都包含了下
  • SpringBoot AOP @AfterThrowing+自定义注解+自定义异常使用

    简介 利用SpringBoot AOP在程序抛出异常时执行对应的操作 在需要的方法上打上自定义的注解 在切面中进行配置 切面接收的参数就是就是抛出的异常 自定义异常存放数据 适合抛出异常后要进行操作的情况 自定义注解 Target Elem
  • tf.multinomial()/tf.random.categorical()用法解析

    tf multinomial tf random categorical 用法解析 首先说一下 tf multinomial 在tensorflow2 0版本已经被移除 取而代之的就是tf random categorical 网上的很多博
  • 常用群体药动学模型评价方法:诊断图

    诊断图 分类 基于预测的模型诊断图 基于残差的模型诊断图 基于贝叶斯估算的模型诊断图 基于预测的模型诊断图 呈现实际观测值与群体 个体预测值的一致性 反映模型对于实测值的拟合程度 1 因变量 群体预测值 DV PRED 绘图 参考线 趋势线
  • SFB 项目经验-67-Exchange 2016删除指定主题邮件

    问题描述 1 员工错发群邮件 2 员工乱发群邮件 3 BOSS要求你批量删除错发群邮件或者乱发邮件 解决方法 通过网络搜索 再结合客户环境测试成功后 精简后的方法 1 使用search mailbox命令搜索后再删除的操作 可以实现邮件的删
  • sql 查询id最大的数据记录

    SELECT money consume type business id transaction log id FROM account consume records where id select max id from accoun
  • Qt入门(4)——Qt常见控件

    Qt提供了大量的内建控件及通用对话框可满足程序员的绝大部分要求 我们将对这些控件和对话框作一个大概的介绍 1 QLabel 定义 cpp view plain copy QLabel m labelOrdered newQLabel 0 t
  • Python:数据类型list的基本操作,list嵌套数组简述

    转自 北京图灵学院刘大拿 https study 163 com course introduction htm courseId 1004987028 后续补充来源 Python 廖雪峰 https www liaoxuefeng com