python数组反转的几种方式
python数组的反转可以有好几种方式,基于python语言的强大表现能力和丰富的特性,总结以下几种。
首先给定一个基本数组: d = [1, 2, 3, 4, 5, 6]
1. reversed函数
reversed 是python的内建函数,会将原数组进行反转(但不影响原数组本身的序列),生成一个新的迭代器,然后你再将其具化为数组。
In [5]: new_d = reversed(d)In [6]: list(new_d)
Out[6]: [6, 5, 4, 3, 2, 1]
2. reverse函数
该函数是数组本身支持的一个功能,它对原数组本身进行修改反转,执行完该操作后,原数组的顺序发生逆变。
In [13]: d.reverse()In [14]: d
Out[14]: [6, 5, 4, 3, 2, 1]
3. 切片
通过切片的方式去生成一个新的数组,原数组本身保持不变。
In [20]: dd = d[::-1]In [21]: dd
Out[21]: [6, 5, 4, 3, 2, 1]
4. 自己实现
这种方式在于有些算法要求需要自己实现,不借助语言本身提供的便捷函数。
4.1 原地交换
这种方式在于基于数组本身修改,利用交换原则,原地交换数组各元素。
def reverse(d: list):d_len = len(d)half_d = d_len // 2for i in range(half_d):d[i], d[d_len - i - 1] = d[d_len - i - 1], d[i]In [27]: reverse(d)In [28]: d
Out[28]: [6, 5, 4, 3, 2, 1]
4.2 倒序遍历
def reverse_1(d: list):d_len = len(d)result = []for i in range(d_len - 1, -1, -1):result.append(d[i])return resultIn [34]: res = reverse_1(d)In [35]: res
Out[35]: [6, 5, 4, 3, 2, 1]
4.3 利用栈的LIFO
其实python的数组也是LIFO的数据类型,这里面压栈的步骤省略,出栈满足我们的要求 - 即从数组尾端出栈,即可实现倒序弹出。
def stack_pop(d: list):while d:yield d.pop()In [37]: d = [1, 2, 3, 4, 5, 6]In [38]: list(stack_pop(d))
Out[38]: [6, 5, 4, 3, 2, 1]
以上就是python的几种数组反转的方式,希望对需要的人有帮助。
相关文章:
python数组反转的几种方式
python数组的反转可以有好几种方式,基于python语言的强大表现能力和丰富的特性,总结以下几种。 首先给定一个基本数组: d [1, 2, 3, 4, 5, 6] 1. reversed函数 reversed 是python的内建函数,会将原数组进行反转(但不影响原数组本身的序列…...
算法每日一题: 最大合金数 | 二分
大家好,我是星恒,今天给大家带来的是一道比较正常的二分题目 题目:leetcode 2861假设你是一家合金制造公司的老板,你的公司使用多种金属来制造合金。现在共有 n 种不同类型的金属可以使用,并且你可以使用 k 台机器来制…...
jvm优化过程
1.top命令执行查看,当前占比比较高的进程,可以看到21660这个进程的cpu占比已经100%了 编辑 2.可以定位到那个微服务的进程,可以看到是fs服务 编辑 3.执行 top -p 21660,然后按下大写的H,可以看到21772这个线程占比最高 编辑 4.…...
《Docker极简教程》--目录
一、前言 本书的目的和目标Docker的简介 二、Docker基础 Docker的历史和发展Docker的工作原理Docker的主要组件 三、Docker环境的搭建 在Windows上搭建Docker环境在Mac上搭建Docker环境在Linux上搭建Docker环境 四、Docker镜像 Docker镜像的概念Docker镜像的创建和使用D…...
嵌入式第十二天!(指针数组、指针和二维数组的关系、二级指针)
1. 指针数组: int *a[5]; char *str[5]; 指针数组主要用来操作字符串数组,通常将指针数组的每个元素存放字符串的首地址实现对多个字符串的操作。 二维数组主要用来存储字符串数组,通过每行存储一个字符串,多行存储多个字符串所组…...
俄罗斯方块游戏设计文档(基于C语言)
1. 引言 本设计文档旨在详细规划基于C语言开发的俄罗斯方块游戏的整体架构、功能模块以及具体实现步骤。这款游戏将通过控制下落的几何形状方块,以填充和消除行的方式进行,旨在提供用户友好的界面与流畅的游戏体验。 2. 需求分析 - 核心元素 - 方块&a…...
【解决】IntelliJ IDEA 重命名 Shift + F6 失效
IntelliJ IDEA 重命名 Shift F6 失效 问题解决 问题 Idea 重命名 Shift F6 ,一直没反应 解决 调查发现原因是微软新版的输入法冲突了。需要设置【使用以前版本的微软拼音输入法】解决兼容性。 设置 -> 时间和语言 -> 区域 -> 语言选项 -> 键盘选项…...
Unknown encoder ‘libmp3lame
环境: macos m1 , python3.10.x 背景 做视频切片, 使用moviepy 中VideoFileClip进行截取视频。 报错: Unknown encoder libmp3lameThe audio export failed because FFMPEG didnt find the specified codec for audio encoding …...
Android升级版本兼容问题
1、JDK的选择 AndroidJavaAPI and language features supported14 (API 34)17Core libraries13 (API 33)11Core libraries12 (API 32)11Java API11 and lowerAndroid versions https://developer.android.com/build/jdks The following table lists which version of Gradle…...
微信生成带参数二维码(用户id), 扫码可获取用户id
生成带参数的二维码: https://developers.weixin.qq.com/doc/offiaccount/Account_Management/Generating_a_Parametric_QR_Code.html 示例代码: /*** 生成带参数的二维码** param userId 用户id* return*/GetMappingRequestMapping("/createTicket/{userId}")pu…...
微信小程序(二十一)css变量-定义页面主题色
注释很详细,直接上代码 上一篇 新增内容: 1.使用css变量 2.消除按钮白块影响 3.修改图标样式 源码: npmTest.json {"navigationStyle": "custom","usingComponents": {//引入vant组件"van-nav-bar"…...
WSL2 Debian系统添加支持SocketCAN
本人最近在使用WSL2,Linux系统选择的是Debian,用起来很不错,感觉可以代替VMware Player虚拟机。 但是WSL2 Debian默认不支持SocketCAN,这就有点坑了,由于本人经常要使用SocketCAN功能,所以决定让Debian支持…...
Redis的五种常用数据结构以及其底层实现
1.字符串 字符串作为Redis中最基础的数据结构,他存储的值可以是任何东西,可以是字符串,数字,二进制,但是字符串存储的值不能超过512M 在Redis中字符串的底层编码是根据值进行改变的 当存储的字符串是一个数字的时候…...
防御保护笔记
防火墙的主要职责在于:控制和防护 --- 安全策略 --- 防火墙可以根据安全策略来抓取流量之 后做出对应的动作。 防火墙分类: 包过滤防火墙: 1,很多安全风险集中在应用层的,所以,仅关注三四层的数据无法做到…...
C++笔记之作用域解析符::和命名空间、作用域的关系
C++笔记之作用域解析符::和命名空间、作用域的关系 —— 杭州 2024-01-26 code review 文章目录 C++笔记之作用域解析符::和命名空间、作用域的关系1.`命名空间`和`作用域`两个术语的联系和区别命名空间(Namespace)作用域(Scope)联系与区别2.`作用域解析符::`和`命名空间`…...
回归预测 | MATLAB实现PSO-GRNN粒子群优化广义回归神经网络多输入单输出预测(含优化前后预测可视化)
回归预测 | MATLAB实现PSO-GRNN粒子群优化广义回归神经网络多输入单输出预测 目录 回归预测 | MATLAB实现PSO-GRNN粒子群优化广义回归神经网络多输入单输出预测预测效果基本介绍程序设计参考资料预测效果 <...
linux安装 黑方容灾备份与恢复系统软件v6.0 代理
1.环境准备 1.1硬件环境 内存>4G,cpu最低双核 1.2把SElinux状态改为Disabled (1)查看SElinux状态 输入getenforce命令 SELinux共有3个状态: enforcing (执行中)、permissive (不执行但…...
STM32第一节——初识STM32
1 硬件介绍 1.1 硬件平台 配套硬件:以野火的STM32 F1霸道开发板为平台,若用的是别的开发板,可自己进行移植。 1.2 什么是STM32 STM32是由意法半导体(STMicroelectronics)公司推出的一系列32位的ARM Cortex-M微控制…...
多场景建模:美团HiNet
HiNet: Novel Multi-Scenario & Multi-Task Learning with Hierarchical Information Extraction 背景: 美团的多场景多任务(ctr、ctcvr) 解决方案 通过分层来分别学习多场景多任务 方案详情 点评:在底层Embedding时用…...
第二百九十三回
文章目录 1. 概念介绍2. 方法与细节2.1 实现方法2.2 具体细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何混合选择多个图片和视频文件"相关的内容,本章回中将介绍如何通过相机获取图片文件.闲话休提,让我们一起Talk Flutter吧。 1. …...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
