5.python 列表切片双冒号[: :]和[:,j]

news2025/7/31 2:05:13

列表切片

  • 1.[::]
  • 2.[ :,j]
  • 3. [::]操作高阶用法

1.[::]

适用于Python中的list(也就是数组),也适用于numpy科学结构(array等)。

使用方法[start: end : step ],也就是[ 起始下标 : 终止下标 : 间隔距离 ]

切片范围是: start <= x < end,注意:一个小于等于,一个小于。

  • 例1
a=['egg', 'fish', 'cake', 'tomato', 'james', 'ava', 'michael', 'emma', 'emily']
print(a[1:3]) #按下标0开始,不包括最右边的3
print(a[1:]) #1以及之后的全部
print(a[:3]) #3之前的但不包括3
print(a[:]) #所有
print(a[::2])#[start:end:step]start和end为空的时候,默认是全选,step为空时默认是1,这个表示的是从索引为0开始,以步长为2来选择元素
print(a[1:3:2])#以索引为1开始,索引3结束,步长为2来选择元素
print(a[::-1])#当step为-1时,将列表进行了逆序排序

print(a[::-2])#当步长为正数时,是从左到右以该步长来获取列表中的元素,当步长为负数时,是从右边到左以该步长的绝对值来获取的元素

print(a[0, 1, 3]) #不可以通过离散的索引值来获取,type error

输出

['egg', 'fish', 'cake', 'tomato', 'james', 'ava', 'michael', 'emma', 'emily']
['fish', 'cake']
['fish', 'cake', 'tomato', 'james', 'ava', 'michael', 'emma', 'emily']
['egg', 'fish', 'cake']
['egg', 'fish', 'cake', 'tomato', 'james', 'ava', 'michael', 'emma', 'emily']
['egg', 'cake', 'james', 'michael', 'emily']
['fish']
['emily', 'emma', 'michael', 'ava', 'james', 'tomato', 'cake', 'fish', 'egg']
['emily', 'michael', 'james', 'cake', 'egg']

在这里插入图片描述

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

# a是Python的一个列表(数据结构上叫做数组)
print(a)
# 例子1
print(a[:2])                                                               
# 例子2
print(a[1][:3])   

输出

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

2.[ :,j]

这也是切片操作,不同的是:保留第一个维度所有元素,第二维度元素保留到j;
只适用numpy的科学数据结构

  • 例3
import numpy as np
# b是一个numpy科学数据结构,格式是array
b = np.array([[1,2,3,4],[2,3,4,5],[5,6,7,8]])

print(b)
# 例子1
print(b[:,2])
# 例子2
print(b[:,3])

# 非numpy数据结构的例子不能使用 [:,j]
x=list([[1, 2, 3, 4], [2, 3, 4, 5], [5, 6, 7, 8]])
print(x)
# 例子3
print(x[:, :2])
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-4b22ebda2101> in <module>()
----> 1 x[:,:2]
 
TypeError: list indices must be integers or slices, not tuple

输出


[[1 2 3 4]
 [2 3 4 5]
 [5 6 7 8]]
[3 4 7]
[4 5 8]
[[1, 2, 3, 4], [2, 3, 4, 5], [5, 6, 7, 8]]
  • 例4
  labels = []
    # prepare the network trace for each user in this round
    net_traces = []
    for trace_file in trace_files[k]:
        user_trace = []
        with open(trace_file) as f:
            lines = f.readlines()
            duration = 0
            t = 0
            # random.shuffle(lines)
            for line in lines:
                tokens = line.split(' ')
                temp_duration = int(tokens[5])
                throughput = tokens[4]
                throughput_MB = float(int(throughput) / 1e6)
                while (t + 1) * config.TIME_INTERVAL - duration < temp_duration:
                    # add some variance
                    # user_trace.append(max(throughput_MB + np.random.normal(0,throughput_MB/10),1.356))
                    # without variance
                    user_trace.append(throughput_MB)
                    t += 1
                duration = t * config.TIME_INTERVAL
                if t >= config.T:
                    break
        net_traces.append(user_trace[:int(config.T)])
    net_traces = np.array(net_traces)

.................
.................
for t in range(int(config.T)):
    config.SLOT_SIZE = tile_sizes[:, t]

输出调试
tile_sizes
在这里插入图片描述
config.SLOT_SIZE
在这里插入图片描述

3. [::]操作高阶用法

  • 例5
# 关于array的科学数据
In [5]: x = np.random.randint(1,10,(3,6))
 
In [6]: x
Out[6]: 
array([[9, 3, 2, 3, 8, 4],
       [3, 5, 6, 8, 4, 3],
       [8, 5, 5, 2, 5, 8]])
 
In [7]: x[:, 0:2:2]
Out[7]: 
array([[9],
       [3],
       [8]])
 
In [8]: x[:, :2:2]  
Out[8]: 
array([[9],
       [3],
       [8]])
 
In [9]: x[:, ::2]
Out[9]: 
array([[9, 2, 8],
       [3, 6, 4],
       [8, 5, 5]])
 
# 关于List
In [10]: d =[[3, 4, 8, 8, 8, 9],
    ...:        [8, 9, 6, 3, 4, 9],
    ...:        [6, 7, 6, 6, 7, 1]]
    ...:        
# 在元素层面,切片是可以用的
In [11]: d
Out[11]: [[3, 4, 8, 8, 8, 9], [8, 9, 6, 3, 4, 9], [6, 7, 6, 6, 7, 1]]
 
In [12]: d[::2]
Out[12]: [[3, 4, 8, 8, 8, 9], [6, 7, 6, 6, 7, 1]]
 
In [13]: d[:2:2]
Out[13]: [[3, 4, 8, 8, 8, 9]]
 
In [14]: d[0:2:2]
Out[14]: [[3, 4, 8, 8, 8, 9]]
 
# 下面不可以用了,因为逗号就代表你认为元素还可以切分,这是和定义一冲突的。
In [15]: d[1,::2]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-15-32535642f99b> in <module>()
----> 1 d[1,::2]
 
TypeError: list indices must be integers or slices, not tuple
  • 注意

1)定义一:在list里面,只存在元素,不存在元素中的元素;list里元素就是最小的成分,不可以再切片。

2)定义二:在array中(numpy的数据都可以)最后一个维度的数据才可以叫做元素,同样元素不可切分。

结合例子解释定义一:就算是二维、三维的list,元素就是axis=0的数据,例如数据x=[[1,2,3,4],[2,3,4,5],[5,6,7,8]],元素就是[1,2,3,4]或者[2,3,4,5]或者[5,6,7,8],而不是更里面的数字1等等;在二维列表中写下x[:],但是不可以写x[:,:],根据定义一,第二种x[:,:]切片操作是不合法的。

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

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

相关文章

iOS 优雅的定义一些全局常量和函数

我们常常使用 #define 来定义一些宏&#xff0c;全局使用。但是可以采用一些更优雅的方式来实现。 方式一&#xff1a;使用 extern 使用场景&#xff1a;工程内多处用到同一个常量。开发中便与管理某一个模块的全局变量&#xff0c;通常创建一个模块的配置文件&#xff0c;里面…

Qt构建时遇到error LNK2019: 无法解析的外部符号 __imp__glAlphaFunc@8,

在我的印象中如果是遇到无法解析的外部命令&#xff0c;无非就是两种情况 头文件定义了方法没有实现lib库没加 因为我这次写的软件我不确定缺失什么库&#xff0c;所以就先检查方法是否未实现&#xff0c;发现方法都实现了&#xff0c;那就只能是lib库缺失的问题了&#xff0…

【机器学习并行计算】1 MapReduce

1 MapReduce 每个节点计算梯度&#xff0c;然后汇聚到一台机子上&#xff0c;再进行梯度下降。时间还需要考虑通信时间。 通信的方式有两种&#xff1a;共享内存和消息传递&#xff1b;在这里存在多机的情况都是消息传递的方式。 通信耗时 MapReduce 会有风险&#xff0c;因为每…

[附源码]java毕业设计农村电商平台

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Python编程从入门到实践 第九章:类 练习答案记录

Python编程从入门到实践 第九章&#xff1a;类 练习答案记录 练习题导航Python编程从入门到实践 第九章&#xff1a;类 练习答案记录9.1 创建和使用类9.1.1 创建Dog类9.1.2 根据类创建实例练习9-1 餐馆 &#xff1a; 创建一个名为Restaurant 的类&#xff0c; 其方法__init__()…

Android 进程间通信(IPC机制)精炼详解

今天主要对 Android 中的跨进程通信进行总结下&#xff0c;先梳理下里面的涉及的一些概念 进程与线程 进程&#xff1a; 系统中正在运行的一个应用程序&#xff0c;某个程序一旦运行就是一个进程&#xff0c;是资源分配的最小单位&#xff1b;线程&#xff1a; 程序执行的最小…

曙光云使用说明

平台链接 https://ac.sugon.com/ac/home/index.html 控制台界面 创建个人工作目录及上传文件。点击概览页面顶端的 E-Shell 菜单栏&#xff0c;进入所连主机的 Shell 终端。在用户目录下新建个人工作目录&#xff0c;如&#xff1a;mkdir ywj2 安装MiniConda&#xff08;推荐…

Ubuntu20.04 如何开启root账户登陆

环境&#xff1a; 电脑&#xff1a;戴尔7080 系统&#xff1a;Windows 10 专业版 64位 VMware 16.0 &#xff1a;Ubuntu20.04 问题描述&#xff1a; Ubuntu20.04 如何开启root账户登陆 解决方案&#xff1a; 1.以普通用户登录系统&#xff0c;创建root用户的密码 在终端…

Java代码审计——WebGoat XSS

目录 &#xff08;一&#xff09;XSS 常见触发位置 1&#xff0e;JSP 表达式 2&#xff0e;EL &#xff08;二&#xff09;反射型 XSS (三&#xff09; 存储型 XSS &#xff08;四&#xff09;XSS 漏洞修复 配置过滤器&#xff1a; &#xff08;一&#xff09;XSS 常见触发…

HTML期末作业课程设计期末大作业__电影长津湖介绍带视频(6页)

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 摄影作品 | 影视设计网页 | 在线电影 | 视频音频元素 | HTML期末大学生网页设计作业&#xff0c;Web大学生网页 HTML&#xff1a;结构 CSS&#xff1…

uiautomator2的安装,使用,在浏览器中查看页面的信息,简单快捷的ui测试工具,app测试工具(一)

uiautomator2的安装&#xff0c;使用&#xff0c;简单快捷的ui测试工具&#xff0c;app测试工具 安装方法 命令行中输入 pip install uiautomator pip install weditor在andriod studio中启动一个模拟器 启动 python -m weditor即可在浏览器看到弹出的窗口&#xff0c;里面…

【滤波跟踪】基于不变扩展卡尔曼滤波器对装有惯性导航系统和全球定位系统IMU+GPS进行滤波跟踪附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

核苷酸类化合物库 脂类化合物库参与细胞调控

核苷及核苷酸是机体内的一种重要的内源物质&#xff0c;参与细胞的多种生命进程&#xff0c;如 DNA 和 RNA 合成&#xff0c;信号转导及代谢等。核苷及核苷酸类似物是人工合成的&#xff0c;经过一定化学修饰的物质&#xff0c;可以模拟机体内核苷及核苷酸&#xff0c;参与细胞…

Git合并出现MERGING有效解决方法

Git合并出现MERGING有效解决方法错误描述解决办法参考链接错误描述 我在操作git合并时候意外出现了MERGING&#xff0c;很懵逼&#xff0c;如图所示&#xff1a; 遇到这个问题也是很头疼了&#xff0c;百度了很多方法有说是&#xff1a;“在命令行输入&#xff1a;git reset …

“以赛助教”进校园,CCF大数据与计算智能大赛成高校人才探索实践AI技术的第二课堂!

随着第十届CCF大数据与计算智能大赛&#xff08;简称2022 CCF BDCI&#xff09;的报名通道关闭、《大咖说系列专题报告》收官&#xff0c;“以赛助教”系列活动也正式宣告结束。 CCF大数据与计算智能大赛&#xff08;CCF BDCI&#xff09;由中国计算机学会于2013年创办&#x…

verilog 流水线控制

文章目录Verilog 流水线控制1、关键问题、实现方式及其对比2、实现方式2.1、控流水线输入&#xff1a;根据每一拍的 din_en_d* 打拍&#xff0c;没有最终的 else block2.2、控流水线输入&#xff1a;根据每一拍的 din_en_d* 打拍&#xff0c;有最终的 else block2.3、控流水线每…

真香!宝藏学习方式还可以这样,家人们绝不能错过

文 / 谷雨&#xff08;微信公众号&#xff1a;王不留&#xff09; 《谷雨&#xff1a;告诉大家一个小秘密》一文&#xff0c;辛苦码字半夜&#xff0c;阅读量却扑街&#xff0c;我想根本原因是标题名字起得太差。 前几天看了一个不知真假的截屏&#xff0c;说到小红书上的关键词…

Linux挂载Windows端NFS服务(实现板端Linux与PC互传文件)

Linux挂载Windows端NFS服务&#xff08;实现板端Linux与PC互传文件&#xff09; 1. kernel编译时打开NFS客户端服务 在宿主机打开kernel文件夹&#xff0c;先make clean&#xff0c;然后make menuconfig&#xff0c;进入配置界面&#xff1a; 使用/查找NFS&#xff0c;找到Ne…

终于有阿里P8从开发、运维两个角度总结出了Redis实战手册

从开发、运维两个角度总结了Redis实战经验&#xff0c;深入浅出地剖析底层实现&#xff0c;包含大规模集群开发与运维的实际案例、应用技巧。 前言Redis作为基于键值对的NoSQL数据库&#xff0c;具有高性能、丰富的数据结构、持久化、高可用、分布式等特性&#xff0c;同时Redi…

Windows10安装Docker(基于WSL2,包含WSL2安装教程)

WSL2 wsl是windows自带的功能&#xff0c;只需要开启Windows功能即可安装子系统 可以通过以下命令获取发行版名字 wsl --list --online通过以下命令安装 wsl --install -d ${发行版名字} 如 wsl --install -d Ubuntu-20.04安装后会弹出来子系统设置用户名密码 运行以下命令…