将多个输出列表放入一个列表(python)

时间:2017-08-03 16:37:05

标签: python

我有这个发电机

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]。 非常感谢你的帮助。感谢

3 个答案:

答案 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)