Python中切片与迭代器入门学习

这篇博客通过一个简单的TensorFlow代码示例,解释了如何使用`tf.data.Dataset`进行数据切片,并通过`iter()`和`next()`函数操作迭代器获取批次数据。博主在尝试打印输出时遇到了乱码问题,但通过不断调用`next()`函数,展示了如何依次取出迭代器中的所有元素。这个过程对于理解和使用TensorFlow的迭代器进行模型训练至关重要。

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

在项目中涉及迭代器相关概念,不是很懂,因此写了简单的测试代码帮助理解,代码如下:

import tensorflow as tf

t = tf.constant(
    [0,1,2,3,4,4,3,2,1,0,0,0,0,0,0,1,1,1,1,1]   
    
                )

# print(t)

train_db = tf.data.Dataset.from_tensor_slices(t).batch(3) 
train_iter = iter(train_db)     #迭代器
sample = next(train_iter)
# print('batch:', sample[0].shape, sample[1].shape)

print(train_db)
print('\n')
print(train_iter)
print('\n')
print(sample)
print(sample)
print(sample)
print('\n')
print(next(train_iter))
print(next(train_iter))
print(next(train_iter))

可以看到,对于一个列表,可以首先通过slice函数进行切片,切片的单位取决于batch中的参数;

将列表切片后,使用iter函数生成迭代器;

使用next函数不断获得迭代器中的迭代参数;

代码运行后输出如下:

分析结果可以看到,前两个参数的打印输出为乱码,我也不知道为什么,可能是不能直接使用吧。

从之后的打印中可以分析出,不停的对next函数进行调用,就可以不断输出迭代器中的数据,直到所有数据输出完毕。

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值