2013-10-14 56 views
0

这只是一个好奇的问题。我的代码有效。我有大量的实例试图打入不同的组(训练,验证和测试)。他们代表了一个单独的列表,但他们留在23组下面是我的实现是很重要的:什么是最pythonic这样做?

train_end = int(len(instances)*TRAINING_END) 
while train_end % CHANNELS != 0: 
    train_end -= 1 
valid_end = int(len(instances)*VALIDATION_END) 
while valid_end % CHANNELS != 0: 
    valid_end += 1 

然后我用分区的[:train_end], [train_end:valid_end], [valid_end:]名单。我觉得所有在Python中采取这些步骤的东西都有一个更简单的方法。有任何想法吗?

+1

codereview.stackexchange.com可能是这个 –

+0

一个更合适的地方看看这个视频约在python http://www.youtube循环结构。 COM /手表?ν= EnSu9hHGq5o – Back2Basics

回答

1

您可以通过执行跳过while循环:

train_end = (int(len(instances)*TRAINING_END) // CHANNELS) * CHANNELS 

这样做的效果是确保int(len(instances)*TRAINING_END)是整除CHANNELS

valid_end,折合效果是:

valid_end = (int(len(instances)*VALIDATION_END) // CHANNELS + 1) * CHANNELS