python@切片slice对象@sequence@range@arange

news2024/11/25 22:36:42

文章目录

    • python文档查阅tips
    • range
      • numpy arange
      • numpy arange@python range🎈
    • collections@容器的抽象基类
      • eg
    • sequence🎈@python序列类型
    • slice@切片
    • slice()内置方法
    • itertools.slice()方法

  • python@切片slice@sequence@range@arange

python文档查阅tips

preface:想通过搜索引擎搜python官方接口文档,往往是一些个人博客排在前面

  • jetbrains IDE
    • IDEA/pyCharm都可以通过编写相关语句,查阅文档(跳转到python文档)
      • 可以通过配置quick document快捷键快速查询
  • vscode +python extension:
    • 类似的,鼠标悬停于指定接口/函数上
    • 一般来说jetbrains的idea可以查到更多的接口
  • 搜索引擎限定网站in site:docs.python.org <你的关键词>
    • in site:docs.python.org是为了再python官方文档内寻找
    • 例如搜索range()方法的文档:in site:docs.python.org range method
  • chatgpt AI引擎

range

  • Built-in Types — Python documentation

numpy arange

  • numpy.arange — NumPy Manual

  • NumPy库中的arange函数是"array range"的缩写。它用于创建一维数组,并按照给定的范围和步长填充数组元素。

    这个函数的完整形式为:

    其中,参数含义如下:

    • start:可选,表示数组的起始值,默认为0。
    • stop:必须,表示数组的终止值(不包括该值)。
    • step:可选,表示数组元素之间的步长,默认为1。
    • dtype:可选,表示数组的数据类型,如果未指定,则根据其他参数自动推断。

    举个例子,如果我们要生成一个从0到9(不包括9)的一维数组,可以这样调用arange函数:

    import numpy as np
    
    a = np.arange(0, 9, 1)
    

    执行完毕后,a将得到一个长度为9的一维数组,其中每个元素都是从0开始,每次递增1,直到小于9为止的数字。

numpy arange@python range🎈

  • Python内置函数range()和NumPy中的arange()函数都具有各自的优点,我们可以根据具体需求选择使用。

    Python内置函数range()的优点:

    • 语法简单易懂,无需导入任何库即可使用。
    • 可以生成一个序列对象,节省存储空间。
    • 可以处理大规模数字范围,因为它不会一次性将所有数字生成出来,而是按需生成。

    NumPy中的arange()函数的优点:

    • 可以处理浮点数类型的范围和步长。
    • 生成的是NumPy数组,可以直接进行矩阵运算等操作。
    • 可以通过指定数据类型来控制生成的数组类型,具有更好的灵活性。

    举个例子来说,如果我们只需要生成一个简单的整数序列,并且对内存要求比较高,那么可以使用Python内置函数range();如果需要生成一维浮点数数组,并且需要进行矩阵运算等操作,那么可以使用NumPy中的arange()函数。

collections@容器的抽象基类

  • collections.abc — 容器的抽象基类 — Python 文档

  • collections-abstract-base-classes

  • 序列类型 — list, tuple, range|内置类型 — Python 文档

  • 参考<<Fluent Python>>中的额外的介绍

  • 在这里插入图片描述

  • collections.abc 模块是 Python 中的一个抽象基类模块,提供了一些抽象基类,用于定义集合类型的接口和行为。开发者可以通过继承这些抽象基类,来实现自己的集合类型,并且可以保证其具有一定的规范和兼容性。

  • 下面是 collections.abc 模块中一些重要的抽象基类及其作用:

    • Container 抽象基类

      • Container 是一个抽象基类,用于定义包含元素的集合类型应该具有的行为。如果一个对象是 Container 的子类,那么它应该实现 __contains__ 方法,以支持 in 操作符的使用。
    • Sized 抽象基类

      • Sized 是一个抽象基类,用于定义包含元素的集合类型应该具有的行为。如果一个对象是 Sized 的子类,那么它应该实现 __len__ 方法,以支持 len() 函数的使用。
    • Iterable 抽象基类

      • Iterable 是一个抽象基类,用于定义可迭代对象应该具有的行为。如果一个对象是 Iterable 的子类,那么它应该实现 __iter__ 方法,以支持迭代操作。
    • Sequence 抽象基类

      • Sequence 是一个抽象基类,用于定义序列类型应该具有的行为。如果一个对象是 Sequence 的子类,那么它应该实现 __getitem____len__ 方法,以支持索引和切片操作。此外,Sequence 还提供了一些其他的方法,例如 index()count() 等,用于在序列中查找元素和计算元素出现的次数。
    • Mapping 抽象基类

      • Mapping 是一个抽象基类,用于定义映射类型应该具有的行为。如果一个对象是 Mapping 的子类,那么它应该实现 __getitem____len__keys() 方法,以支持键值对的访问和遍历。此外,Mapping 还提供了一些其他的方法,例如 values()items() 等,用于获取映射中的值和键值对。
    • Set 抽象基类

      • Set 是一个抽象基类,用于定义集合类型应该具有的行为。如果一个对象是 Set 的子类,那么它应该实现 __contains____len____iter__add() 方法,以支持集合中元素的访问、迭代和添加等操作。此外,Set 还提供了一些其他的方法,例如 remove()discard()pop() 等,用于删除集合中的元素。

    总体而言,collections.abc 模块提供了一些抽象基类,用于定义集合类型的接口和行为,可以帮助开发者实现自己的集合类型,并保证其具有一定的规范和兼容性。建议开发者在实际应用中合理使用 collections.abc 模块,并根据需要选择合适的抽象基类。

eg

  • Sequence = collections.abc.Sequence  # type:ignore
    
    def get_features_tag(f_config):
        """Returns label corresponding to which features are to be extracted
        返回形如('mfcc-chroma-contrast')的特征标签链
    
        params
        -
        f_config:list[str]|dict[str,bool]|str
            包含情感特征组合的可迭代对象
    
        Examples
        -
        eg1
        >>> f_config1 = {'mfcc': True, 'chroma': True, 'contrast': False, 'tonnetz': False, 'mel': False}
        >>> get_label(f_config1)
        >>> 'mfcc-chroma'
        >>> f_config2={'mfcc': True, 'chroma': True, 'contrast': True, 'tonnetz': False, 'mel': False}
        >>> utils.get_label(f_config2)
        >>> 'mfcc-chroma-contrast'
    
        eg2
        >>> MCM=['chroma', 'mel', 'mfcc']
        >>> get_features_tag(MCM)
        >>> 'chroma-mel-mfcc'
        """
        res = ""
        type_error=TypeError("Invalid type of f_config!")
        if isinstance(f_config, dict):
            used_features=[]
            for f in ava_features:
                if f_config.get(f):
                    used_features.append(f)
            # used_features.sort()
            f_config=used_features
        elif isinstance(f_config, str):
            f_config = [f_config]
        # elif isinstance(f_config, Sequence):
        #     pass
        # else:
        #     raise type_error
        elif(not isinstance(f_config,Sequence)):
            raise type_error
        
        f_config.sort()
        res = "-".join(f_config)
        return res
    

sequence🎈@python序列类型

  • common-sequence-operations|Built-in Types — Python documentation

  • An iterable which supports efficient element access using integer indices via the __getitem__() special method and defines a __len__() method that returns the length of the sequence.

  • Some built-in sequence types are list, str, tuple, and bytes.

  • Note that dict also supports __getitem__() and __len__(), but is considered a mapping rather than a sequence because the lookups use arbitrary immutable keys rather than integers.

  • The collections.abc.Sequence abstract base class defines a much richer interface that goes beyond just __getitem__() and __len__(), adding count(), index(), __contains__(), and __reversed__().

  • Types that implement this expanded interface can be registered explicitly using register().

slice@切片

  • An object usually containing a portion of a sequence.
  • A slice is created using the subscript notation, [] with colons between numbers when several are given, such as in variable_name[1:3:5].
  • The bracket (subscript) notation uses slice objects internally.

slice()内置方法

  • 在Python中,slice()是一个内置函数,用于创建一个切片对象(slice object),用于切片操作。切片(slice)是指从序列中获取一部分元素的操作,可以用于对列表、元组、字符串等序列类型进行操作。切片操作通常使用[start:stop:step]的形式表示,其中start表示起始位置(默认为0),stop表示终止位置(默认为序列长度),step表示步长(默认为1)。 slice()函数的语法如下:

    codeslice(stop)
    slice(start, stop, step)
    

    参数说明:

    • start:可选参数,表示切片的起始位置。
    • stop:必选参数,表示切片的结束位置。
    • step:可选参数,表示切片的步长。
    • 如果只提供一个参数,则该参数表示切片的结束位置,起始位置默认为0,步长默认为1。
    • 如果提供两个参数,则第一个参数表示切片的起始位置,第二个参数表示切片的结束位置,步长默认为1。
    • 如果提供三个参数,则分别表示切片的起始位置、结束位置和步长。
  • 下面是一些使用slice()函数的示例:

    # 列表切片
    my_list = [1, 2, 3, 4, 5]
    s = slice(1, 4)
    print(my_list[s])   # 输出 [2, 3, 4]
    # 字符串切片
    my_string = "Hello, World!"
    s = slice(7)
    print(my_string[s])  # 输出 Hello, 
    # 步长为2的切片
    s = slice(1, 7, 2)
    print(my_string[s])  # 输出 el,
    # 切片赋值
    my_list[s] = [6, 7]
    print(my_list)   # 输出 [1, 6, 3, 7, 5]
    
    • 在上述示例中,我们使用slice()函数创建了切片对象s,然后使用s来对列表和字符串进行切片操作。
    • 同时,我们也可以使用切片对象进行赋值操作,将切片替换为指定的值。

itertools.slice()方法

  • itertools.islice(iterable, stop)
    itertools.islice(iterable, start, stop[, step])
    
  • 创建一个迭代器,返回从 iterable 里选中的元素。

  • 如果 start 不是0,跳过 iterable 中的(开头)元素,直到到达 start 这个位置。

    • 之后迭代器连续返回元素,除非 step 设置的值很高导致被跳过。
  • 如果 stopNone,迭代器耗光为止;否则,在指定的位置停止。

  • 与普通的切片不同,islice() 不支持将 startstop ,或 step 设为负值。

    • 可用来从内部数据结构被压平的数据中提取相关字段(例如一个多行报告,它的名称字段出现在每三行上)。大致相当于:
    def islice(iterable, *args):
        # islice('ABCDEFG', 2) --> A B
        # islice('ABCDEFG', 2, 4) --> C D
        # islice('ABCDEFG', 2, None) --> C D E F G
        # islice('ABCDEFG', 0, None, 2) --> A C E G
        s = slice(*args)
        start, stop, step = s.start or 0, s.stop or sys.maxsize, s.step or 1
        it = iter(range(start, stop, step))
        try:
            nexti = next(it)
        except StopIteration:
            # Consume *iterable* up to the *start* position.
            for i, element in zip(range(start), iterable):
                pass
            return
        try:
            for i, element in enumerate(iterable):
                if i == nexti:
                    yield element
                    nexti = next(it)
        except StopIteration:
            # Consume to *stop*.
            for i, element in zip(range(i + 1, stop), iterable):
                pass
    
  • 如果 startNone,迭代从0开始。如果 stepNone ,步长缺省为1。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/539046.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【软件测试】软件测试为什么会用到Linux?

作为软件测试工程师&#xff0c;我们首先要知道linux是啥&#xff1f;Linux是操作系统&#xff0c;我们常用的操作系统有Windows和linux&#xff0c;他们的区别是&#xff1a; 一、免费与收费 在中国&#xff0c;windows和linux都是免费的&#xff0c;至少对个人用户是如此&…

iTOP-RK3568开发板Uboot参数-内核启动参数cmdline

目前 cmdline 参数有多个来源,由 U-Boot 进行拼接、过滤重复数据之后再 传给 kernel。U-Boot 阶段的 cmdline 被保存在 bootargs 环境变量中。U-Boot 最 终是通过修改的 kernel DTB 里的 /chosen/bootargs 实现 cmdline 传递。 cmdline 是 uboot 引导内核启动时传递给内核的…

chatgpt赋能Python-left_on_python

了解Python中的left_on函数 在Python编程中&#xff0c;left_on是一个非常重要的函数&#xff0c;特别是在数据处理中。这个函数可以帮助开发者快速、准确地合并或匹配数据&#xff0c;从而更好地分析和处理数据。本篇文章将介绍left_on函数的基本用法和语法&#xff0c;以及在…

chatgpt赋能Python-pycharm主函数

PyCharm主函数&#xff1a;让Python编程更加高效 如果你是一名Python工程师&#xff0c;那么你一定离不开一个优秀的Python集成开发环境&#xff08;IDE&#xff09;。而在这个领域中&#xff0c;PyCharm绝对是最好的之一。其中&#xff0c;PyCharm主函数是一项非常重要的功能…

MSF入侵安卓手机

MSF是Metasploit的简称&#xff0c;Metasploit是一款开源的安全漏洞检测工具&#xff0c;非常强大&#xff0c;分别有Windows版和Linux版&#xff0c;工具里集成了许多微软公布的漏洞(0day)。 我这里做测试的系统是Backbox linux &#xff0c;这是一款网络渗透&#xff0c;信息…

物联网|串口的编程技巧|发送函数分析|初始化函数|IAR显示行号|串口的数据格式|数据帧的设计思路|物联网之蓝牙4.0 BLE基础-学习笔记(9)

文章目录 串口的编程技巧发送函数分析串口&#xff08;UART0)初始化函数主函数体完整代码&#xff1a;TIPS1:IAR显示行号TIPS2:IAR编译出现 Fatal Error[e72]: Segment BANKED_CODE must be defined解决方法&#xff1a; 串口的数据格式 串口的编程技巧 发送函数分析 void Ua…

chatgpt赋能Python-pycharm爬虫电影代码

PyCharm爬虫电影代码详解 作为一位有着10年python编程经验的工程师&#xff0c;我想分享一下关于PyCharm爬虫电影代码的详细介绍和使用方法。 PyCharm简介 PyCharm是由JetBrains开发的一款Python IDE&#xff0c;它为Python开发者提供了一站式的开发环境&#xff0c;包括代码…

WALN网络不存在? 离谱事件解决方法

前情&#xff1a; 本来在高高兴兴赶ddl&#xff0c;突然发现网断了。尝试重连&#xff0c;显示无法连接... 遂重启&#xff0c;结果事情更糟了&#xff0c;WALN就没了&#xff0c;没了&#xff0c;没了... 这张是修好之后的图&#xff0c;但是当时所有包括蓝牙&#xff0c;waln…

例2:子流程

例&#xff1a;如图所示流程&#xff0c;物流Feed经冷却器Chiller冷却后进入子流程Sub进行气液分离。物性包选择Peng-Robinson。 目录 &#xff08;1&#xff09;新建模拟&#xff08;2&#xff09;创建组分列表&#xff08;3&#xff09;定义物性包&#xff08;4&#xff09;…

Goldengate Monitor Agent 安装

Goldengate Monitor & Agent GoldenGate Monitor基础知识1.GoldenGate Monitor介绍2.GoldenGate Monitor 的技术架构如下&#xff1a;3.Oracle GoldenGate4.GoldenGate Monitor Server5.GoldenGate Monitor Repository6.GoldenGate Monitor AgentGOLDENGATE MONITOR安装安…

计算机基础知识之字符编码

目录 1、基础知识2、ASCII编码3、编码格式4、多字节字符集&#xff08;MBCS&#xff09;和中文字符集5、ANSI 标准、国家标准、 ISO 标准6、Unicode 编码7、 UTF-8编码 1、基础知识 &#x1f449;字符&#xff1a;是各种文字和符号的总称&#xff0c;包括各个国家的文字&#…

nodejs进阶(6)—连接MySQL数据库

1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE DATABASE mydb1; mysql> SHOW DATABASES; -------------------- | Database | -------------------- | information_schem…

IOS描述文件制作教程​

转载&#xff1a;IOS描述文件制作教程 iOS描述文件(.mobileprovision)一键申请 在主界面上点击描述文件按钮。 ​ 编辑切换为居中 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 新建ios描述文件 然后点击新建&#xff0c;然后输入描述文件名称&…

chatgpt赋能Python-phython_抓取数据

Python 抓取数据的SEO 介绍 在今天的数字化时代&#xff0c;数据是企业的核心资产之一。然而&#xff0c;这些数据往往散布在网络上的不同源头。大多数的企业需要使用各种不同的技术来从各种不同的来源中抓取数据。Python 是一种强大的工具&#xff0c;可以使这个过程更加简单…

【Linux内核】自旋锁spinlock机制

自旋锁 Note: 在使用自旋锁时应该避免长时间持有锁&#xff0c;否则可能会导致其他线程或进程无法访问共享资源。因此&#xff0c;建议将锁的持有时间尽量缩短&#xff0c;以提高系统的并发性能。 Linux中的自旋锁机制是一种用于同步多个线程或进程访问共享资源的技术。当一个…

chatgpt赋能Python-nan在python

Nan在Python中的介绍 Nan是Python中的一个特殊值&#xff0c;它代表非数值&#xff08;Not a Number&#xff09;。在Python中&#xff0c;Nan常被用于表示缺失值或无意义的数值。 Nan的意义 Nan在Python中的意义与其他编程语言中的NaN类似。它表示一个数值是未定义或无法计…

使用viewport-fit=cover来解决关于ios在Safari浏览器内容被地址栏、菜单栏或工具栏遮挡导致的兼容问题

文章目录 前言一、viewport-fit1. 作用2. 取值3. 使用 二、使用css 的 env() 和 constant()函数用于设定安全区域与边界的距离1.iPhone手机的安全区域&#xff08;如下图&#xff09;2. 由来、作用3. 使用4.语法5.兼容问题 三、解决ios内容被Safari遮挡的两种情况1.顶层div的he…

chatgpt赋能Python-numpy转化为pandas

从Numpy到Pandas: 如何将数组转换为数据框 如果您正在使用Python进行数据分析&#xff0c;那么您一定会听说过Numpy和Pandas。他们是Python中最受欢迎的数据科学库之一&#xff0c;可以极大地简化数据处理的流程。但是&#xff0c;当您想从numpy数组转换为pandas数据框时&…

chatgpt赋能Python-pycharm的location

Pycharm Location: 如何更好地管理Python项目文件 在日常Python开发中&#xff0c;我们很少能避免需要同时管理多个项目&#xff0c;这就要求我们有一款优秀的IDE来帮助我们更好地进行项目管理。Pycharm 是一款备受欢迎的 Python IDE。其中的 Location 功能可以帮助我们更好地…

Java 基础进阶篇(十五):IO 流总结(全网最全面)

文章目录 前置内容&#xff1a;字符集一、IO 流概述二、字节流2.1 文件字节输入流 FileInputStream2.1.1 案例&#xff1a;每次读取一个字节2.1.2 案例&#xff1a;每次读取一个字节数组2.1.3 案例&#xff1a;读取文件的全部字节 2.2 文件字节输出流 FileOutputStream2.3 文件…