【发布时间】:2020-12-03 14:55:14
【问题描述】:
如何优雅地将 python 列表分成两个,以便第二个具有第一个的每个第 n 个元素,并将这些切片元素从第一个列表中删除? 切片不应从第一个元素开始!
例子:
split_data([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])
应该返回
([1,2,3,4,6,7,8,9,11,12,13,14], [5,10,15])
谢谢你:)
编辑: 对于选择每第 n 个元素的部分,我尝试了以下方法:
test = data[::5]
train = data
del data[::5]
return (train, test)
然而,这只会为split_data(list(range(1, 30))) 返回([2, 3, 4, 5, 7, 8, 9, 10, 12, ...], [1, 6, 11, 16, 21, 26])。
优雅我想表达我想避免使用for循环来遍历列表;)
【问题讨论】:
-
你已经尝试过什么“不优雅”?
-
你能告诉我们你到目前为止尝试了什么以及为什么它不能解决你的问题吗?
-
纯代码编写请求在 Stack Overflow 上是题外话——我们希望这里的问题与特定编程问题有关——但我们很乐意帮助您自己编写!告诉我们what you've tried,以及您遇到的问题。这也将有助于我们更好地回答您的问题。
-
感谢您的建议,我已经编辑了我的帖子。
-
顺便说一句:从您的
train/test名称看来,您正在做分类/机器学习的工作。那么你可能/应该使用 numpy 数组或 pandas 数据框或类似的东西而不是列表。这样可以做得更优雅