Python高级用法:索引和切片

article/2025/3/1 18:18:17

大家好,我是老马的程序人生~

Python语言语法简洁,易于上手,但当你深入研究时,会发现Python有很多高级用法,这些高级用法可以大幅度提高代码的可读性和运行效率。

下面介绍Python的高级用法之一:索引与切片。

在Python中,获取列表的元素不仅可以使用索引,还可以使用切片操作。

索引:

  • 通过元素的索引值,从列表获取单个元素,注意,列表索引值是从0开始的。
  • 通过将索引指定为-1,可让Python返回最后一个列表元素,索引 -2 返回倒数第二个列表元素,以此类推。

【例子】

x = ['Monday', 'Tuesday', 'Wednesday', ['Thursday', 'Friday']]
print(x[0], type(x[0]))  # Monday <class 'str'>
print(x[-1], type(x[-1]))  # ['Thursday', 'Friday'] <class 'list'>
print(x[-2], type(x[-2]))  # Wednesday <class 'str'>

切片:

切片的通用写法是 start : stop : step

  • 情况 1:“start :”
  • step 为 1 (默认) 从编号 start 往列表尾部切片。

【例子】

x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(x[3:])  # ['Thursday', 'Friday']
print(x[-3:])  # ['Wednesday', 'Thursday', 'Friday']
  • 情况 2:“: stop”
  • step 为 1 (默认) 从列表头部往编号 stop 切片。

【例子】

week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[:3])  # ['Monday', 'Tuesday', 'Wednesday']
print(week[:-3])  # ['Monday', 'Tuesday']
  • 情况 3:“start : stop”
  • step 为 1 (默认) 从编号 start 往编号 stop 切片。

【例子】

week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[1:3])  # ['Tuesday', 'Wednesday']
print(week[-3:-1])  # ['Wednesday', 'Thursday']
  • 情况 4:“start : stop : step”
  • 以具体的 step 从编号 start 往编号 stop 切片。注意最后把 step 设为 -1,相当于将列表反向排列。

【例子】

week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[:-3:-1])  # ['Friday', 'Thursday']
print(week[:-6:-1])  # ['Friday', 'Thursday', 'Wednesday', 'Tuesday', 'Monday']
print(week[:-9:-1])  # ['Friday', 'Thursday', 'Wednesday', 'Tuesday', 'Monday']
print(week[3:-3:-1])  # ['Thursday']
print(week[2:-3:-1])  # []
  • 情况 5:" : "
  • 复制列表中的所有元素(浅拷贝)。

【例子】

week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[:])  
# ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']

【例子】浅拷贝

list1 = [123, 456, 789, 213]
list2 = list1
list3 = list1[:]print(list2)  # [123, 456, 789, 213]
print(list3)  # [123, 456, 789, 213]
list1.sort()
print(list2)  # [123, 213, 456, 789] 
print(list3)  # [123, 456, 789, 213]

【例子】理解浅拷贝与深拷贝

import copylist1 = [[123, 456], [789, 213]]
list2 = list1
list3 = list1[:]
list4 = copy.deepcopy(list1)
print(list2)  # [[123, 456], [789, 213]]
print(list3)  # [[123, 456], [789, 213]]
print(list4)  # [[123, 456], [789, 213]]
list1[0][0] = 111
print(list2)  # [[111, 456], [789, 213]]
print(list3)  # [[111, 456], [789, 213]]
print(list4)  # [[123, 456], [789, 213]]

总结


http://chatgpt.dhexx.cn/article/mblY0UHv.shtml

相关文章

微机中锁存器和缓冲器的区别

锁存器和缓冲器的作用是什么? 锁存器广泛用于计算机与数字系统的输入缓冲电路&#xff0c;其作用是将输入信号暂时寄存&#xff0c;等待处理&#xff0c;这一方面因为计算机或数字系统的操作都是有序进行的&#xff0c;通常不可能信号一到即刻处理&#xff0c;另一方面&#x…

锁存器、触发器和寄存器区别对比-基础小知识(十)

文章目录 基本概念锁存器与触发器区别锁存器与触发器不同应用场合锁存器产生条件锁存器危害参考文档 基本概念 锁存器(latch)&#xff1a;、在电平信号的作用下改变状态&#xff0c;是一种电平触发的存储单元。锁存器的数据存储动作取决于输入使能信号的电平值&#xff0c;仅当…

【数字电路】D锁存器和D触发器的区别

我们在数字电路中经常使用到D触发器&#xff0c;有时候还会听到D锁存器这种电路&#xff0c;那么这两种电路到底有什么关系&#xff1f;又存在什么区别&#xff1f; 方法一&#xff1a;功能的文字叙述 1&#xff09;D锁存器&#xff1a; 功能分析文字描述&#xff1a;C 0时&a…

SR锁存器与D锁存器设计与建模

⭐本专栏针对FPGA进行入门学习&#xff0c;从数电中常见的逻辑代数讲起&#xff0c;结合Verilog HDL语言学习与仿真&#xff0c;主要对组合逻辑电路与时序逻辑电路进行分析与设计&#xff0c;对状态机FSM进行剖析与建模。 &#x1f525;文章和代码已归档至【Github仓库&#xf…

【基础知识】~ 锁存器/触发器、寄存器

本章目录&#xff1a; 1. 锁存器/触发器1.1 概念1.2 性质1.3 分类1.4 二者区别1.5 为什么锁存器不好&#xff1f;1.6 小问题&#xff0c;大智慧 2. 寄存器3. 基本SR锁存器3.1 符号表示的意义3.2 由与非门构成的3.3 由或非门构成的 4 门控SR锁存器4.1 电平触发4.1.1 带异步清零和…

数字电路:常见的锁存器浅析

转载自&#xff1a; 数字电路&#xff1a;常见的锁存器浅析&#xff08;S-R,S‘-R‘,使能端的S-R&#xff0c;D&#xff09;_李嘉祎的博客-CSDN博客_锁存器 转载是怕万一博主删除&#xff0c;侵删。 锁存器是数字电路中基础的基础&#xff0c;本文将展现出常用的锁存器类型&a…

锁存器、D触发器、寄存器理解

1、锁存器 锁存器对脉冲的电平敏感&#xff0c;也就是电平触发&#xff0c;在有效的电平下&#xff0c;锁存器处于使能状态&#xff0c;输出随着输入发生变化&#xff0c;此时它不锁存信号&#xff0c;就像一个缓冲器一样&#xff1b;在锁存器没有使能时&#xff0c;则数据被锁…

锁存器、触发器、寄存器

1.锁存器&#xff08;Latch&#xff09; 1.1.SR锁存器&#xff08;基本锁存器&#xff09; 由两个或非门或者两个与非门组成&#xff0c;电路结构、图形符号和特性表如下所示。 此时&#xff0c;输出状态&#xff08;次态&#xff09;与输入状态、锁存器初态都有关。 1.2.电平触…

【计算机组成原理】寄存器的本质——锁存器

一.逻辑门电路 逻辑门的与门知道吧 逻辑门的或门听说过吧 逻辑门中的非门简单吧 基础知识就复习到这里&#xff08;—...—&#xff09; 二.AND—OR锁存器 如果把与门的其中一个输入与输出连接在一起会发生什么&#xff1f; 我们可以观察到&#xff0c;激活状态后无论IN1输入…

数字电路基础---锁存器

目录 锁存器 1、简介 2、实验任务 3、程序设计 3.1、缺少 else 分支的锁存器代码 3.2、补齐 else 分支 3.3、缺少 default 的 case 语句的锁存器代码 3.3、补齐 default 的 case 语句 4、本章总结 锁存器 锁存器&#xff08;俗称 Latch&#xff09;是数字电路中的一种…

硬件基础——锁存器

双稳态 在电子电路中。双稳态电路的特点是&#xff1a;在没有外来触发信号的作用下&#xff0c;电路始终处于原来的稳定状态。在外加输入触发信号作用下&#xff0c;双稳态电路从一个稳定状态翻转到另一个稳定状态。由于它具有两个稳定状态&#xff0c;故称为双稳态电路。双稳态…

锁存器、触发器和寄存器

锁存器 锁存器&#xff08;latch&#xff09;---对脉冲电平敏感&#xff0c;在时钟脉冲的电平作用下改变状态 锁存器是电平触发的存储单元&#xff0c;数据存储的动作取决于输入时钟&#xff08;或者使能&#xff09;信号的电平值&#xff0c;当锁存器处于使能状态时&#…

锁存器的使用

实际举例&#xff1a; GPIO_Write(GPIOC,~(1<<(leds7))); //写入c端口为000000001 GPIO_SetBits(GPIOD,GPIO_Pin_2); //使输出有效 GPIO_ResetBits(GPIOD,GPIO_Pin_2); //进行锁存 先开锁存器还是先给IO数据呢&#xff1f; 其实两个照现象来看的话都…

【FPGA】锁存器、触发器和寄存器

目录 一丶锁存器1.什么是锁存器2.锁存器工作原理3.锁存器优缺点 二丶触发器1.什么时触发器2.触发器工作原理3.代码实现 三丶寄存器四丶锁存器与触发器的区别 一丶锁存器 1.什么是锁存器 锁存器&#xff08;latch&#xff09;—对脉冲电平敏感&#xff0c;在时钟脉冲的电平作用…

寄存器与锁存器

一 原理解析 在数字电路中&#xff0c;通常采用存储单元与组合逻辑相结合的方式实现特定功能。这种存储单元一般采用双稳态原件构成。首先明确一下概念&#xff0c; 寄存器&#xff1a;边沿触发的存储元件 锁存器&#xff1a;电平敏感的器件 触发器&#xff1a;一般来说&#x…

锁存器,D触发器和寄存器的关系与区别

锁存器&#xff0c;D触发器和寄存器的关系与区别 文章目录 锁存器&#xff0c;D触发器和寄存器的关系与区别前言一、锁存器和D触发器二、锁存器构建D触发器三、什么是寄存器&#xff1f;四、总结五、参考资料 前言 数字IC设计里&#xff0c;常会出现锁存器&#xff0c;D触发器…

锁存器相关

2-1】基本双稳态电路 将两个非门G1和G2接成如图5.1.1所示的交叉耦合形式&#xff0c;则构成最基本的双稳态电路。 从图5.1.1所示电路的逻辑关系可知&#xff0c;若 Q0 &#xff0c;经非门G2反相&#xff0c;则 Q 1。Q反馈到G1输入端&#xff0c;又保证了 Q0 。 由于两个非门首…

数字电路中D触发器和D锁存器分别有什么作用?

用数字信号完成对数字量进行算术运算和逻辑运算的电路称为数字电路&#xff0c;或数字系统。由于它具有逻辑运算和逻辑处理功能&#xff0c;所以又称数字逻辑电路。现代的数字电路由半导体工艺制成的若干数字集成器件构造而成。逻辑门是数字逻辑电路的基本单元。存储器是用来存…

锁存器

出处 http://blog.csdn.net/metalseed/article/details/8259255 by MetalSeed 本文要点 1&#xff1a;锁存器的主要作用 2&#xff1a;74HC573引脚图 3&#xff1a;74HC573电路连接及使用说明 锁存器辨析 所谓锁存器&#xff0c;就是输出端的状态不会随输入端的状态变化而变…

锁存器Latch和触发器Flip-flop的区别

锁存器Latch概述 锁存器&#xff08;Latch&#xff09;是一种对脉冲电平敏感的存储单元电路&#xff0c;它们可以在特定输入脉冲电平作用下改变状态。锁存&#xff0c;就是把信号暂存以维持某种电平状态。锁存器的最主要作用是缓存&#xff0c;其次完成高速的控制器与慢速的外…