lintcode-2169 · 三个三个的生成数据

举报
搞前端的半夏 发表于 2021/11/30 22:19:06 2021/11/30
【摘要】 大家好,我是半夏👴,一个刚刚开始写文的沙雕程序员.如果喜欢我的文章,可以关注➕ 点赞 👍 加我微信:frontendpicker,邀你进群,一起学习交流前端,成为更优秀的工程师~关注公众号:半夏话前端,了解更多前端知识!点我探索新世界! 描述请编写 Python 代码,将一串数据作为模板数据,并根据模板数据使用生成器 3 个 3 个的生成指定条数的数据。请在 solution.py 中编...

大家好,我是半夏👴,一个刚刚开始写文的沙雕程序员.如果喜欢我的文章,可以关注➕ 点赞 👍 加我微信:frontendpicker,邀你进群,一起学习交流前端,成为更优秀的工程师~关注公众号:半夏话前端,了解更多前端知识!点我探索新世界!

描述

请编写 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
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。