2017-08-03 53 views
-1

我有這樣的發電機製作多輸出列出一個列表中(蟒蛇)

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']或最優選['1','2','5','6']。 將不勝感激您的幫助。由於

+2

是...'your_list =列表(鍵())' –

回答

1

您可以只將其轉換爲一個列表直接作爲list需要一個迭代;

out = list(keys()) 

或者如果你想,你可以使用列表理解;

out = [key for key in keys()] 

這樣可以更容易地使用[for x in y if z]語法過濾出生成器中的某些項目。

Both output;

>>> print(out) 
['2', '6', '1', '5'] 
+0

實際它也排序,謝謝!我完全忽略了列表理解,謝謝大家! – pyjka

+0

我更新了我的答案只是幾秒鐘之前,你評論說,要明確,但謝謝@AChampion :) –

+0

'[鑰匙鑰匙()()]'只是矯枉過正。 –

-1

像這個?:

my_list = [] 
for i in keys(): 
    my_list.append(i.split()) 

print my_list 
-1

這將是一個列表理解這樣的,如果你想讓它儘可能接近你原來的答案:

list = [key.split() for key in keys()] 
print(list)