2017-08-21 2 views
-1

これは明らかですが、私の関数がリストを作成する場合は謝罪してください。関数内にリストの変数を表示すると、すべてのリストが返されます。しかし、関数の外部にグローバル変数を出力すると、最初の値だけが返されます。ここでは、コードの2つの異なるバージョンがあります:しかし、このコードは私が印刷していていても、一つの値だけを返すなぜ私の変数は関数の外で1つの値しか返さないのですか?

from itertools import chain, combinations 

noise_1 = "somerandomvalue" 

min_var_length = 8 
max_var_length = 16 

#creates a powerset of the input value, taking into account min and max lengths 
def powerset(iterable): 
    global powerset_list 
    s = list(iterable) 
    x = list(chain.from_iterable(combinations(s, r) for r in range(len(s)+1))) 
    x_string = list(x) 
    for items in x_string: 
     if len(items) > min_var_length: 
       powerset_list = items 
       print(powerset_list) 


powerset(noise_1) 

をそしてnoise_1

の冪を返します。式内側

印刷が動作します同じグローバル変数:

from itertools import chain, combinations 

noise_1 = "somerandomvalue" 

min_var_length = 8 
max_var_length = 16 

#creates a powerset of the input value, taking into account min and max lengths 
def powerset(iterable): 
    global powerset_list 
    s = list(iterable) 
    x = list(chain.from_iterable(combinations(s, r) for r in range(len(s)+1))) 
    x_string = list(x) 
    for items in x_string: 
     if len(items) > min_var_length: 
       powerset_list = items 



powerset(noise_1) 
print(powerset_list) 

私はそれが一つの値の後に機能を停止されますが、私はこの動作を変更する方法がわからない推測しています。ご協力ありがとうございました!申し訳ありませんが、私はnoob。

+0

あなたは***リスト全体を 'items'で置き換えています。あなたはリストに追加されていません。そこから、単に各ループの反復でその1項目の「リスト」を印刷するのか、最後に1回印刷するのかという違いがあります。 – deceze

+0

私は理解します。だから、私は基本的にはpowerset_list = []とpowerset_list.append(items)というpowersetリストに追加するだけで解決できます。 –

答えて

0

確認するには、forループの後にリストを追加すると、すべてのアイテムのリストが作成されます。関数内のprintコマンドはforループを発生したときに表示するだけですが、変数には1つの項目だけが保存されます。

関連する問題