首页 > 解决方案 > 选择列表的前 20%,然后选择列表的下 20%

问题描述

我有一个这样的列表,其中包含大约 141 个条目:

training = [40.0,49.0,77.0,...... 3122.0]

我的目标是选择列表的前 20%。我是这样做的:

testfile_first20 = training[0:int(len(set(training))*0.2)]
testfile_second20 = training[int(len(set(training))*0.2):int(len(set(training))*0.4)]
testfile_third20 = training[int(len(set(training))*0.4):int(len(set(training))*0.6)]
testfile_fourth20 = training[int(len(set(training))*0.6):int(len(set(training))*0.8)]
testfile_fifth20 = training[int(len(set(training))*0.8):]

有没有办法在循环中自动执行此操作?这是我选择 Kfold 的方式。

谢谢你。

标签: pythonpandas

解决方案


这是一个简单的列表理解

lst = list('abcdefghijkl')
l = len(lst)

[lst[i:i+l//5] for i in range(0, l, l//5)]

# [['a', 'b'], 
#  ['c', 'd'], 
#  ['e', 'f'], 
#  ['g', 'h'], 
#  ['i', 'j'], 
#  ['k', 'l']]

编辑:实际上,现在我查看我的答案,它不是真正的 20% 表示,因为它返回 6 个子列表而不是 5 个。当列表不能平均分为 5 个部分时会发生什么?在得到进一步澄清之前,我将暂时搁置这一点。


推荐阅读