[::-1] 在 python 中意味着什么 - 切片?

2023-12-12

我有一个变量a=range(0,5)我需要知道why and how a[::-1]这有效。我得到的答案是range(4,-1,-1)。感谢帮助。

P.S. 这是一个非常基本的问题,但由于这个问题是以非常结构化的方式回答的,我尝试编辑这个问题并使其更加普遍和有用。


Slicing

  1. 负数为start and stop意思是“从最后”。它本质上相当于len-value.
  2. 负数为step意思是“相反的顺序”。
  3. 空开始意味着 0,即第一个元素。
  4. 空停意味着len。停止参数是唯一的!

So [::-1]表示从第一个元素到最后一个元素,以 1 为步长,逆序排列。

  1. 如果你有[start:stop]它是一样的step=1. So [:-1]这意味着除了最后之外的一切。又是最后一个元素独家的。它是一样的[:-1:] or [0:-1:1].

如果你只有start,它返回一个由索引给出的元素start. Thus [-1]表示最后一个元素。与...一样[len-1] would.

range

范围也有语法start,stop,step但该步骤具有不同的含义。步骤从以下位置开始重复添加start。所以你开始于4,然后向下添加-1直到你击中stop,也独占。所以range(5,0)[::-1]相当于range(4,-1,-1)。你可以计算一下。

为什么口译员说range(0,5)[::-1] => range(4, -1, -1)?

Python解释器足够聪明,可以将一部分转换为range进入另一个range。这是一种优化,范围是生成器。它们是动态的,即它们不会同时保存内存中的所有元素。如果您使用的解释器逐步工作,它必须生成整个列表,只是为了能够以相反的顺序迭代。计算新的生成器更加智能。

Łukasz 的回答详细解释了它是如何完成的。

顺便提一句。你可以强制它生成一个list,并阻止优化:

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

[::-1] 在 python 中意味着什么 - 切片? 的相关文章

随机推荐

  • API 14 之前的 Android 网络发现服务 (ish)

    我需要能够发现本地网络上的服务 比如说我正在运行一个聊天应用程序 并且我想发现本地网络上运行此聊天的其他设备 但遗憾的是我需要能够在具有API 至少有三四个选择 您可以使用 TCP 或 UDP 广播地址 组播地址 迭代网络中的所有地址 HT
  • 在同一端口上接收多个多播源 - C、Linux

    我有一个应用程序正在同一端口上从多个多播源接收数据 我能够接收数据 然而 我试图解释每组的统计数据 即收到的消息 收到的字节 并且所有数据都变得混乱 有谁知道如何解决这个问题 如果我尝试查看发送者的地址 它不是多播地址 而是发送机器的 IP
  • 为什么 conn.Read() 不向 []byte 写入任何内容,但 bufio.Reader.ReadString() 有效?

    我有一个连接 创建如下 conn err net Dial tcp 127 0 0 1 20000 我尝试通过两种方式阅读此连接 我认为它们都必须起作用 但第一个选项不起作用 这是第一种方法 var bytes byte for i 0 i
  • 是否可以创建一个更改 about:config 设置的 Firefox WebExtension?如何?

    我想创建一个 WebExtension 为其中的某些设置提供切换按钮about config e g permissions default image 在 WebExtensions 中可以做到这一点吗 如果有 API 是什么 我相信这个
  • 如何观察NSScroller的变化?

    我有一个NSScrollView子类 我想更新另一个NSView基于当前滚动位置 我尝试了 KVC 观察value of self horizontalScroller 但这永远不会被调用 In awakeFromNib self hori
  • 在shiny中动态添加模块

    这与使用 renderUI 创建模块无关 据我了解 使用 renderUI 您可以在 UI 函数中放置一个占位符 然后在服务器函数中编写控件 小部件 模块分为两部分 您必须使用 callModule 将一部分添加到 UI 函数 将另一部分添
  • 使用多个签名重写 C++ 虚拟方法 [重复]

    这个问题在这里已经有答案了 我有一个 C 基类 它声明一个具有两个不同签名的虚拟方法 一旦我重写派生类中的虚拟方法签名之一 编译器 g 4 6 3 和 g 4 7 就不再能够将该方法与同一派生类中的第二个签名相匹配 如果我只将 SPECIA
  • 在 CSS 网格布局中,我们是否从隐式网格线开始计算跨度?

    这个问题是关于 CSS 网格是否 跨度计数 它是否应该从隐式网格线开始 在CSS 权威指南 第 4 版 第 14 页695 据说 box4 是事情真正变得有趣的地方 它结束于第五行线 即第二条隐式网格线 它跨越了三行 然而 它仍然从与 bo
  • PHP文件在模态窗口内上传

    我已经在互联网上搜索了好几天 但没有运气 我需要一个模式窗口来上传文件并将附加值传递给脚本 当用户单击 这是问题 时 需要打开模式窗口 以下是我当前的脚本 任何帮助或指导将不胜感激
  • 不允许加载本地资源:file:///

    我的项目中名为 幻灯片 的文件夹中有一些图像 我正在尝试访问这些图像 但它给了我以下错误 Not allowed to load local resource file C xampp htdocs MyProject Slides 123
  • Xcode 4 - 如何获取 .app 文件?

    我安装了 Xcode 4 它有非常酷的功能 我使用 Xcode 4 开发了我的新应用程序 现在将其交给客户进行测试 问题是我无法在查找器中获取 app 文件 在产品类别下 当我选择 app 文件并右键单击它时 没有 在查找器中显示 选项 我
  • django-debug-toolbar 通过相对路径查找资产?

    我正在尝试让 django debug toolbar 正常工作 在遵循所有说明后 我收到以下错误 05 Sep 2012 15 33 35 GET profile edit HTTP 1 1 200 43647 05 Sep 2012 1
  • 当覆盖层打开时暂停 Flexslider

    我们目前正在开发一个利用 Flexslider 插件 最近被 Woo Themes 收购 的项目 我们在此页面上有多个弹出窗口 我们希望滑块在弹出窗口处于活动状态时暂停 并在弹出窗口关闭时恢复 暂停仅在第一轮有效 恢复滑块不起作用 下面是我
  • 带参数和数组的对象

    C 中是否有一种方法可以在对象上添加参数 并使用数组 例如 int x 1 int y 2 Object myObject x y 5 does not work 我希望我可以将参数放入对象中 同时创建 5 个这样的对象的数组 有人知道怎么
  • 将 Tidymodels 进程映射到列表/分组依据或嵌套

    我真的很喜欢 tidymodels 但我不清楚如何将该模型工作流程适合于嵌套分组之类的东西 例如 tidyr 在 mtcars 的气缸等物体上勾勒出一个简单的嵌套 然后为每个气缸拟合一个独特的线性调节模型 我正在尝试基于圆柱体之类的东西来拟
  • Vba 代码在工作簿打开后停止。没有错误

    我有一些代码旨在打开 xlsm 工作簿 从中复制一些数据并将其与代码一起粘贴到工作簿中 两个工作簿均受密码保护 代码也受密码保护 我有一些代码设置为在保存 打开和关闭之前运行 从而锁定工作簿 所以问题是 在通过 vba 打开工作簿后 代码停
  • 在 BlackBerry 中创建自定义布局

    我想在屏幕的下半部分创建一个 RichTextField 同时在屏幕的上半部分绘制自己的自定义图形 这在黑莓手机中可能吗 它尝试定义 LayoutManager 并尝试将 RichTextField 定位在屏幕底部 但 RichTextFi
  • 为什么JVM可以自行从OOM Java堆空间中恢复

    Integer data new Integer 1000000 100000 如上面的简单演示代码 我尝试在 pandora 容器 它是阿里巴巴开发的 Web 容器 如 tomcat 中申请显着的大内存并触发 OOM 但似乎此错误仅影响当
  • 如何切换“使用自动配置脚本”

    WhoIsRich 发布了一个很棒的脚本来切换自动检测设置 你能告诉我如何设置使用自动配置脚本吗 原文发布于Windows 注册表中的哪个键禁用 IE 连接参数 自动检测设置 To set reg add HKCU Software Mic
  • [::-1] 在 python 中意味着什么 - 切片?

    我有一个变量a range 0 5 我需要知道why and how a 1 这有效 我得到的答案是range 4 1 1 感谢帮助 P S 这是一个非常基本的问题 但由于这个问题是以非常结构化的方式回答的 我尝试编辑这个问题并使其更加普遍