如何解决是否可以有条件地忽略某些产生的值?
我有一个生成器功能,用于生成(伪)json数据。为了提供更好的数据多样性,我想以编程方式设置生成或不生成哪些节点。有没有一种方法可以在yield
的每个模板行周围包裹逻辑?我意识到整个yield
可以用逻辑包装,但是排列的数量会使它变得麻烦。
def json_generator(length):
for x in range(length):
yield {'node1': x,'node2': x,'node3': x
}
对于这种用例,我是否最好将每个节点附加到字符串上,并在附加逻辑周围加上逻辑?
解决方法
似乎您正在寻找算法/过程
- 弄清楚排除节点的规则
- 将节点放入“熊猫系列”中
- 使用Numpy随机方法之一生成布尔数组-也许使用某种加权来实现您的规则
- 使用布尔数组索引/选择节点Series中的项目
- 将结果与其他任何文本连接起来以生成字符串并产生结果
或者将节点保留在列表中,并使用内置的随机方法选择节点的子集。用能在切割后幸存的琴弦制作琴弦。
,听起来这就是您在说的:
def json_generator(length,add1=True,add2=True,add3=True):
for x in range(length):
r = {}
if add1: r['node1'] = x
if add2: r['node2'] = x
if add3: r['node3'] = x
yield r
for x in json_generator(10,False,True,True):
print(x)
结果:
{'node2': 0,'node3': 0}
{'node2': 1,'node3': 1}
{'node2': 2,'node3': 2}
{'node2': 3,'node3': 3}
{'node2': 4,'node3': 4}
{'node2': 5,'node3': 5}
{'node2': 6,'node3': 6}
{'node2': 7,'node3': 7}
{'node2': 8,'node3': 8}
{'node2': 9,'node3': 9}
如果仅使用length
参数创建生成器,则会保留原始行为。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。