2017-08-03 11 views
-1

私はこの発電機に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ループ

for i in keys(): 
    i= i.split() 
    print i 

を使用しないすべてのジェネレータ値を、取得したいと出力は:

['1'] 
['2'] 
['5'] 
['6'] 

私はそれらを1つのリストに追加する方法はありますか? ['1']、['2']、['5']、['6']]または最も好ましくは['1'、 '2'、 '5'、 '6']のような である。 あなたのご協力に感謝します。おかげlistが反復可能になりますようあなただけの、直接リストに変換することができますこの?:

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

print my_list 
+2

はい... 'your_list =リスト(キー())' –

答えて

1

同様

+0

実際それも並べ替え、ありがとう!私は完全にリストの理解を無視し、おかげで大きな時間! – pyjka

+0

私は自分の答えをほんの数秒前に更新しました。あなたはそれを明確にするためにコメントしましたが、ありがとう@AChampion :) –

+0

'[key in keys()]'はちょっと残虐です。 –

-1

out = list(keys()) 

また、リスト内包表記を使用することもできます。

out = [key for key in keys()] 

これは、それが簡単に[for x in y if z]構文を使用して発電機から特定の項目を除外するためになるだろう。

両方の出力;

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

あなたの元の答えに可能な限り類似したい場合には、このようなリストの内包表記のようになります。

list = [key.split() for key in keys()] 
print(list) 
関連する問題