python 中的内置函数slice()

本文介绍Python中slice()函数的用法,展示如何使用该函数对list、tuple和numpy数组进行灵活切分,特别是在高维数据如tensor上的应用,与split()函数进行对比,并给出实际代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

slice()函数是一个切片函数,可以作用于list,tuple,numpy等结构,其作用类似于列表中常见的切片操作,但是如果按照某个长度将list等可以用于切片的序列做等分,一般可以用一个循环可以实现。

l =[1,2,3,4,5,6,7,8,9,10]
i = 0
while(i<10):
    print(l[i:i+2])
    i += 2

output:
[1, 2]
[3, 4]
[5, 6]
[7, 8]
[9, 10]

这个过程,可以用slice()函数代替。

fold_size = 2  
for j in range(len(l)//fold_size):
    idx = slice(j*fold_size,(j+1)*fold_size)
    print(l[idx])

slice()函数一共有三个参数:start,end,step。step默认为1。slice()根据start,end,step返回一个slice(0, 2, None)结构,然后应用于列表结构。

这样看,slice()函数的好处并没有特别多的体现,但是它能容易地用于tensor结构,也就是2维甚至更高维度。

import torch
x = torch.rand(10,8)

fold_size = 2
for j in range(0,x.size()[1]//fold_size):
    idx = slice(j * fold_size, (j + 1) * fold_size)  
    print(x[:,idx])  ##切分8维度,切分10维度-> x[idx,:]
    print(x[:,idx].size())

'''
将8这个维度,每份为2进行切分,返回每份大小。
output:
tensor([[0.6415, 0.9648],
        [0.2723, 0.1438],
        [0.5300, 0.8959],
        [0.1583, 0.9972],
        [0.4612, 0.9555],
        [0.9713, 0.9526],
        [0.5785, 0.1008],
        [0.1837, 0.9140],
        [0.6577, 0.1127],
        [0.0530, 0.7081]])
torch.Size([10, 2])
'''

在对于切分tensor结构中,slice()内置函数和tensor中的split()作用类似。

for step,x in enumerate(torch.split(x,2,dim=1)):
    print(x)

'''
x按照第二维度,每块2切分
x同上'''

因为tensor中有split(),但是在numpy等结构中,可以用slice()做切分,下面是numpy结构的一个切分。

import numpy as np
x = [[1,2,3,1],[4,5,6,1],[7,8,9,1],[10,11,12,1]]
x = np.array(x)

fold_size = 2
for j in range(0,x.shape[1]//fold_size):
    idx = slice(j * fold_size, (j + 1) * fold_size)  
    print(x[:,idx])
    print(x[:,idx].shape)

 

### Python 常用内置函数概述 Python 提供了一系列丰富的内置函数,可以直接调用而无需额外导入模块。这些函数被封装在`__builtins__`中,并通过C语言实现了高效性能[^2]。 #### 查看所有内置函数 为了查看当前环境中可用的所有内置函数和其他内置对象,可以使用`dir(__builtins__)`方法: ```python print(dir(__builtins__)) ``` 这会返回一个包含所有内置名称的列表,其中包括各种类型的内置函数、异常类以及其他有用的工具。 #### 几种常见内置函数及其应用案例 ##### `filter()` - 过滤可迭代对象中的元素 此函数用于筛选满足特定条件的数据项。下面的例子展示了如何利用匿名函数(lambda表达式)来选取负数: ```python numbers = range(-5, 5) less_than_zero = list(filter(lambda x: x < 0, numbers)) print(less_than_zero) # 输出:[-5, -4, -3, -2, -1] ``` ##### `float()` - 将字符串或其他数值转换成浮点型 该函数能够把整数或表示实数的字符串转化为浮点数形式。如果输入不是有效的数字,则抛出ValueError错误[^3]: ```python number_str = "123.45" converted_number = float(number_str) print(converted_number) # 输出:123.45 ``` 除了上述提到的功能外,还有许多其他重要的内置函数如`len()`, `sum()`, `max()`, `min()`, `sorted()`, `abs()`, `round()`, `type()`, `isinstance()`, `callable()`, `getattr()`, `setattr()`, `delattr()`, `compile()`, `eval()`, `exec()`, `open()`, `input()`, `print()`, `range()`, `enumerate()`, `zip()`, `map()`, `reversed()`, `list()`, `tuple()`, `dict()`, `set()`, `frozenset()`, `chr()`, `ord()`, `hex()`, `oct()`, `bin()`, `pow()`, `divmod()`, `format()`, `hash()`, `id()`, `slice()`, `staticmethod()`, `classmethod()`, `property()`, `super()`, `globals()`, `locals()`, `vars()`, `help()`, `dir()`, `next()`, `iter()`, `all()`, `any()`, `bool()`, `int()`, `str()`, `bytes()`, `bytearray()`, `memoryview()`. 每一种都有其独特的用途,在不同的编程场景下发挥着重要作用。对于初学者来说,熟悉最基础的一些就足以应对大多数日常开发需求;而对于更复杂的项目,则可能需要用到更多高级特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Foneone

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值