Python [::-1]的简单理解与用法

这篇具有很好参考价值的文章主要介绍了Python [::-1]的简单理解与用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

从结果上来看,[::-1]的作用是对列表进行翻转,比方说:

a = [1, 2, 3, 4, 5]
print(a[::-1])

b = "12345"
print(b[::-1])

输出:

[5, 4, 3, 2, 1]
54321

可以发现这个东西的用法和reversed函数是相同的,只不过更为简洁:

a = [1, 2, 3, 4, 5]
print(list(reversed(a)))

b = "12345"
print("".join(reversed(b)))

输出:

[5, 4, 3, 2, 1]
54321

那么这个东西的原理是什么呢?一般来说,我们见过一个冒号的情况比较多,用来做列表切片:

a = [1, 2, 3, 4, 5]
print(a[:-1])
print(a[1:])
print(a[:])

输出:

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

多一个冒号的话,新冒号后面的数字表什么呢?其实是表步长,比如:

a = [1, 2, 3, 4, 5]
print(a[:-1])
print(a[:-1:])
print(a[:-1:1])
print(a[:-1:2])

输出:

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

步长是正数的话,[a:b]是从a到b,往右读取,b应该比a大;而步长如果改成负数,[a:b]的含义仍然是从a到b,只是往左读取,所以此时b应该比a小,比如:

print(a[3:0:-1])

输出:

[4, 3, 2]

自然而然的,如果不指定a,b,那么处理的范围是整个列表;步长为-1,表示整个列表从右往左读取,即翻转数组。


那么数据是二维的会怎么样呢?直接看例子:

a = [[1, 2],
     [3, 4]]
print(a[::-1])

输出:

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

这一结果的本质是,切片本身只在数组的第0维去操作,而二维数组的的0维是行,因此会把所有行给逆序。
三维数组的话同理,将第0维逆序:

a = [
     [[1, 2],[3, 4]],
     [[5, 6],[7, 8]]
    ]

输出:

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

既然涉及到三维,那就可以拓展到图片了。比方说,使用cv2.imread读到的图片是存储在尺寸为(H, W, C)的ndarray里的。如果对图片使用[::-1],相当于对第0维H(height)进行逆序,将图片垂直翻转180度:

import cv2

img = cv2.imread("1.jpg")
img = img[::-1]
cv2.imwrite("2.jpg", img)

翻转前:
[::-1],Pytorch,划水
翻转后:
[::-1],Pytorch,划水文章来源地址https://www.toymoban.com/news/detail-527505.html

到了这里,关于Python [::-1]的简单理解与用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (Python)对numpy中的argmax用法的理解

    argmax()返回的就是最大数的索引 argmax()有一个参数axis,可以指定函数返回不同维的最大值。 结果是 4 。而在python中一维向量只有一个方向,所以一维情况下axis只能等于0,函数只会返回一个值。 如果对它进行转置,它就会变成一个二维矩阵: axis的值大于0 比如说 会报错 nu

    2023年04月24日
    浏览(47)
  • Python中super函数的详细用法,直观理解

    super相关的介绍文章看了无数遍,每次看得都云里雾里的,没过多久就忘了,只模糊知道跟MRO有关,但是稍微一复杂就不知道怎么回事了,本篇文章主要记录我对super的理解 super的作用就是执父类的方法,虽然这句话不完全对,但是也差不多是那么个意思了。 比如以单继承为

    2024年02月07日
    浏览(46)
  • 一段代码理解Python异步函数async的基本用法

    异步函数的使用规则 正常情况下我们的函数时串行的运行的,这里称之为主函数. 异步函数:与主函数并行运行. Python异步函数即async必须在普通函数的命名前加上 async 示例: 执行async函数 async函数内等待:只阻塞当前async函数 m_mock安装 通过上述代码示例可以发现case_a和case_b通过

    2024年02月15日
    浏览(51)
  • 想划水、如何让 AI 替我打工,并让我快速学 Python?

    一、安装插件 Step 1 环境准备 Step 2 插件安装 Step 3 插件注册 Step 4 注册成功 二、AI 代码生成和学习 效果 1:写注释自动生成代码 效果 2:自动补齐代码 - 列表 效果 3:自动补齐代码 - for 循环 效果 4:自动补齐代码 - 条件判断 三、基于 Amazon CodeWhisperer 的 Python 学习 3.1 变量和数

    2024年02月08日
    浏览(34)
  • Python简单理解1-10阶乘和运算

    2!=2*1=2 3!=3 *2 *1=6 4!=4* 3 *2 *1=24 5!=5* 4 * 3* 2* 1=120 . . . . 10!=10* 9* 8* 7 *6 *5 * 4 * 3 * 2 * 1=3628800 自2以后的阶乘都是前面数的阶乘再乘以本身的数。如4的阶乘4!=4 3!(3 2*1),因此我们可以使用for循环来执行代码,定义一个变量啊a和一个总和sum然后for循环,1-10(因为是10的阶乘),再循环当

    2024年02月04日
    浏览(35)
  • 简单理解Python中的深拷贝与浅拷贝

    I. 简介 深拷贝会递归的创建一个完全独立的对象副本, 包括所有嵌套的对象 ,而浅拷贝只 复制嵌套对象的引用 ,不复制嵌套对象本身。 简单来说就是两者都对原对象进行了复制,因此使用is运算符来比较新旧对象时,返回的都是False(都开辟了新的内存);两者区别在于 对嵌

    2024年02月12日
    浏览(41)
  • 使用Python和PyTorch库构建一个简单的文本分类大模型:

            在当今的大数据时代,文本分类任务在许多领域都有着广泛的应用,如情感分析、垃圾邮件过滤、主题分类等。为了有效地处理这些任务,我们通常需要构建一个强大的文本分类模型。在本篇博客中,我们将使用Python和PyTorch库来构建一个简单的文本分类大模型,

    2024年01月25日
    浏览(45)
  • GBDT算法原理以及实例理解(含Python代码简单实现版)

    GBDT 的全称是 Gradient Boosting Decision Tree ,梯度提升树,在传统机器学习算法中,GBDT算的上是TOP前三的算法。 想要理解GBDT的真正意义,那就必须理解GBDT中的 Gradient Boosting 和 Decision Tree 分别是什么? 1. Decision Tree:CART回归树 首先, GBDT使用的决策树是CART回归树 ,无论是处理回

    2024年02月02日
    浏览(38)
  • pytorch的用法

                                                           

    2024年02月11日
    浏览(41)
  • Pytorch.tensor 相关用法

    Torch.tensor.backward()方法的使用举例 理解optimizer.zero_grad(), loss.backward(), optimizer.step()的作用及原理 Autograd: 自动求导

    2024年02月10日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包