python切片中内存的注意事项总结

1、由于 Python 列表的切片会在内存中创建新对象,因此需要注意的另一个重要函数是itertools.islice。

2、通常需要遍历切片,而不仅仅是在内存中静态创建它。islice非常适合这个。

一个警告,它不支持负的参数start,stop或者step,如果这是一个问题,您可能需要计算指标或反向迭代提前。

length = 100
last_nine_iter = itertools.islice(list(range(length)), length-9, None, 1)
list_last_nine = list(last_nine_iter)

现在:

>>> list_last_nine
[91, 92, 93, 94, 95, 96, 97, 98, 99]

列表切片制作副本的事实是列表本身的一个特征。如果您对 Pandas DataFrame 等高级对象进行切片,它可能会返回原始视图,而不是副本。

内容扩展:

语法:

nuList[start:end:direction]
start -->起始下标(direction = 1时,默认是0;direction = -1时默认是-1)
start -->结束下标(direction = 1时,默认是len(nuList)-1;direction = -1时默认是-(len(nuList)-1))
direction --> 默认是1,切片方向从左往右;-1时,切片方向从右往左

1.只包含左边的端数据,不包含右边的端数据

print(nuList[1:3])

结果是:[1,2]

2.按照不同的方向返回元素

print(nuList[::])

结果是:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(nuList[::-1])

结果是:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

3.严格按照方向顺序截取

print(nuList[3:1]) #从左往右,下标3开始切,但是无法找到下标1

print(nuList[-1:-3]) #从左往右,下标-1开始切,但是无法找到下标-3

print(nuList[-3:-1:-1]) #从右往左,下标-3开始切,但是无法找到下标-1

结果都为:[]

print(nuList[1:-1]) #从左往右,下标1开始切,能找到-1下标

结果:[1, 2, 3, 4, 5, 6, 7, 8]

print(nuList[-1:1:-1]) #从右往左,下标-1开始切,能找到1下标

结果:[9, 8, 7, 6, 5, 4, 3, 2]

到此这篇关于python切片中内存的注意事项总结的文章就介绍到这了,更多相关python切片中内存的注意事项内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python切片中内存的注意事项总结

    1.由于 Python 列表的切片会在内存中创建新对象,因此需要注意的另一个重要函数是itertools.islice. 2.通常需要遍历切片,而不仅仅是在内存中静态创建它.islice非常适合这个. 一个警告,它不支持负的参数start,stop或者step,如果这是一个问题,您可能需要计算指标或反向迭代提前. length = 100 last_nine_iter = itertools.islice(list(range(length)), length-9, None, 1) list_

  • Python 切片为什么不会索引越界?

    切片主要用于序列对象中,按照索引区间截取出一段索引的内容. 切片的书写形式:[i : i+n : m] :其中,i 是切片的起始索引值,为列表首位时可省略:i+n 是切片的结束位置,为列表末位时可省略:m 可以不提供,默认值是 1,不允许为 0,当 m 为负数时,列表翻转. 切片的基本含义是:从序列的第 i 位索引起,向右取到后 n 位元素为止,按 m 间隔过滤 . 下面是一些很有代表性的例子,基本涵盖了切片语法的使用要点: # @Python猫 li = [1, 4, 5, 6, 7, 9,

  • python多进程中的内存复制(实例讲解)

    比较好奇python对于多进程中copy on write机制的实际使用情况.目前从实验结果来看,python 使用multiprocessing来创建多进程时,无论数据是否不会被更改,子进程都会复制父进程的状态(内存空间数据等).所以如果主进程耗的资源较多时,不小心就会造成不必要的大量的内存复制,从而可能导致内存爆满的情况. 示例 举个例子,假设主进程读取了一个大文件对象的所有行,然后通过multiprocessing创建工作进程,并循环地将每一行数据交给工作进程来处理: def parse_

  • python实现在内存中读写str和二进制数据代码

    我就废话不多说了,还是直接看代码吧! # 利用python在内存中读写str和二进制数据 from io import StringIO from io import BytesIO f = StringIO() print(f.write('hello ')) # 6 print(f.write('world!')) # 6 print(f.getvalue()) # hello world! f = BytesIO() print(f.write('中文'.encode('utf-8')))

  • Python切片索引用法示例

    本文实例讲述了Python切片索引用法.分享给大家供大家参考,具体如下: 在Python中,可以用用简单的方括号加一个下标的方式访问序列的每一个元素,这种方式称之为切片操作符,切片操作符有三种形式: [],[:],[::] 访问某一数据元素的语法如下: sequence[index] sequence是序列的名字,index是访问元素的对应的偏移量,为正数,0<=index<=len(sequence)-1:使用负索引的时候,其范围为-len(sequence) <=index <

  • Python跑循环时内存泄露的解决方法

    Python跑循环时内存泄露 今天在用Tensorflow跑回归做测试时,仅仅需要循环四千多次 (补充说一句,我在个人PC上跑的).运行以后,我就吃饭去了.等我回来后,Console窗口直接亮红了!!! import numpy as np import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import tensorflow as tf import matplo

  • python列表中remove()函数的使用方法详解

    目录 1. 基本使用 2. 删除普通类型元素 3. 删除对象类型元素 4. 一次只删一个元素 5.Python列表的remove方法的注意事项 总结 1. 基本使用 remove() 函数可以删除列表中的指定元素 语法 list.remove( element ) 参数 element:任意数据类型(数字.字符串.列表等) 2. 删除普通类型元素 删除一个列表中「存在」的数字或字符串 list1 = ['zhangsan', 'lisi', 1, 2] list1.remove(1) # 删除数

  • Python语言中的数据类型-序列

    目录 一.什么是序列数据类型? 二.序列数据类型的基本操作 1.序列的通用方法 2.通过索引访问数据 3.同类型的序列进行拼接 4.判断序列成员 5.序列的排序操作 6.内置函数all()与any() 7.序列的拆分 三.列表 1.创建列表 2.向列表内添加数据 3.删除列表内的数据 三.元组 四.字符串 五.字节序列 前言:前面我们提到了Python数据类型中的内置数值类型与字符串类型.今天学习一下Python的序列数据类型,要知道的是在Python中没有数组这一数据结构,也没有提供直接创建数

  • 一篇文章彻底搞懂Python切片操作

    目录 引言 一.Python可切片对象的索引方式 二.Python切片操作的一般方式 三.Python切片操作详细例子 1.切取单个值 2.切取完整对象 3.start_index和end_index全为正(+)索引的情况 4.start_index和end_index全为负(-)索引的情况 5.start_index和end_index正(+)负(-)混合索引的情况 6.连续切片操作 7.切片操作的三个参数可以用表达式 8.其他对象的切片操作 四.Python常用切片操作 1.取偶数位置 2.

  • Python Numpy中ndarray的常见操作

    目录 前言 0 Numpy基础知识 1 ndarray的属性 1.1 输出ndarray的常见属性 2 ndarray的数据类型 3 修改ndarray的形状和数据类型 3.1 查看和修改ndarray的形状 3.2 查看和修改ndarray的数据类型 4 ndarray数组创建 5 ndarray数组的常见运算 6 ndarray数组的索引.切片和迭代 7 ndarray数组的堆叠.拆分 前言 NumPy(Numerical Python)是Python的一种开源的数值计算扩展.这种工具可用来

随机推荐