- 小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
描述
请编写 Python 代码,将一串数据作为模板数据,并根据模板数据使用生成器 3 个 3 个的生成指定条数的数据。
请在 solution.py
中编写创建生成器的代码,我们会在 main.py
中通过导入的方式运行你的代码,以检测你的代码是否实现了以上功能。
**
- 若模板数据不是 3 的倍数,则舍弃掉最后不足的数据重新从首位开始循环生成
- 若模板数据小于 3 个数,则直接将模板数据作为一条数据进行重复生成
样例
样例一:
当输入数据为:
[1,0,5,5,3,10,9,10,3,5,5,6,7,4,10,8,7,7,7]
7
复制代码
输出数据为:
[1, 0, 5]
[5, 3, 10]
[9, 10, 3]
[5, 5, 6]
[7, 4, 10]
[8, 7, 7]
[1, 0, 5]
复制代码
样例二:
当输入数据为:
[8,2,5,10,3,3,0,7,2,1,5,6,6,5,1,6,9]
10
复制代码
输出数据为:
[8, 2, 5]
[10, 3, 3]
[0, 7, 2]
[1, 5, 6]
[6, 5, 1]
[8, 2, 5]
[10, 3, 3]
[0, 7, 2]
[1, 5, 6]
[6, 5, 1]
复制代码
题解
首先,这道题是一道很简单的题目,这里需要判断,-
若模板数据不是 3 的倍数,则舍弃掉最后不足的数据重新从首位开始循环生成,这里对3进行求余数,判断是不是3的倍数,如果不是直接舍弃。 若模板数据小于 3 个数,则直接将模板数据作为一条数据进行重复生成。这里定义一个变量,每次生成的时候就直接把他加1累加,然后与输入的值进行比较,判断是否需要退出。
class DataLoader:
def __init__(self, data):
# write your code here
self.L1=[]
for i in data:
self.L1.append(i)
for i in range(len(self.L1)%3):
self.L1.pop()
def get_data(self):
# write your code here
j = 0
while True:
self.L=[]
if j>=len(self.L1)-1:
j = 0
for i in range(3):
self.L.append(self.L1[j])
j+=1
yield self.L
复制代码