我有这个发电机
def keys():
objects = [{'1':True,'2':True,'3':False,'4':False,'5':True,'6':True}]
rng = range(len(objects))
clean = int(''.join(map(str, rng)))
for keys, values in objects[clean].iteritems():
if values == True:
yield keys
然后我想得到所有的生成器值,我用它来循环
for i in keys():
i= i.split()
print i
,输出为:
['1']
['2']
['5']
['6']
有没有办法可以将它们添加到单个列表中? 例如[[' 1'],[' 2'],[' 5'],[' 6']]或最优选[ #&39; 1'&#39 2'&#39 5'' 6&#39]。 非常感谢你的帮助。感谢
答案 0 :(得分:1)
您可以直接将其转换为列表,因为list
需要迭代;
out = list(keys())
或者如果你愿意,你可以使用列表理解;
out = [key for key in keys()]
这样可以更轻松地使用[for x in y if z]
语法从生成器中过滤掉某些项目。
两个输出;
>>> print(out)
['2', '6', '1', '5']
答案 1 :(得分:-1)
喜欢这个?:
my_list = []
for i in keys():
my_list.append(i.split())
print my_list
答案 2 :(得分:-1)
如果您希望它与原始答案尽可能相似,那将是一个列表理解:
list = [key.split() for key in keys()]
print(list)