是否可以在预定义的可变数据上创建python迭代器?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了是否可以在预定义的可变数据上创建python迭代器?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1309字,纯文字阅读大概需要2分钟。
内容图文
![是否可以在预定义的可变数据上创建python迭代器?](/upload/InfoBanner/zyjiaocheng/783/85fcd47e9eca477caf712730606f9eb3.jpg)
我可能做错了,如果我是,请告诉我,但我很好奇以下是否可能:
我有一个包含许多字典的类,每个字典都将名称与给定类的不同对象集合配对.例如:
items = {"ball" : ItemInstance1, "sword" : ItemInstance2}
people = {"Jerry" : PersonInstance1, "Bob" : PersonInstance2, "Jill" : PersonInstance3}
然后,我的班级将保留当前可用的项目和人员,随着州的变化,这些项目可能会发生变化:
Class State:
def __init__(self, items, people):
self.items = items
self.people = people
我想定义一个iter()和next()方法,以便迭代其属性中的所有值.我的第一个问题是这是否可行.如果是,它是否能够支持如下情况:
我在上面定义了项目和人员:
state = State(items, people)
for names, thing in state:
print name + " is " + thing.color
items[cheese] = ItemInstance3
for names, thing in state:
print name + " weighs " + thing.weight
虽然我觉得这对我的代码有用,但我不知道它是可能的还是正确的方法.我读过的关于用户定义迭代器的所有内容都表明它们的每个实例都只是一个用途.
解决方法:
如果我理解你的问题是正确的,那么在你的类中添加以下方法应该这样做:
def __iter__(self):
import itertools
return itertools.chain(self.items.itervalues(), self.people.itervalues())
这将两个迭代器链接在一起,这里选择的是迭代器的值和人的值.
为了让你的后期代码工作,你需要迭代这些项 – 键值对.在这种情况下,这样做:
def __iter__(self):
import itertools
return itertools.chain(self.items.iteritems(), self.people.iteritems())
内容总结
以上是互联网集市为您收集整理的是否可以在预定义的可变数据上创建python迭代器?全部内容,希望文章能够帮你解决是否可以在预定义的可变数据上创建python迭代器?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。