2017-11-13 9 views
-1

なぜそれが答えを返していないのだろうか?Pythonの乗算は、リスト

x=[1,2,3] 
    y=[2,4,6] 
    xy = [] 
    def mult_list(xy):  
     for i in range(0, len(x)):  
     xy.append(x[i]*y[i])  
     return xy 
+0

期待どおりに動作しません。それが実際にあなたがやっていることであれば、おそらくグローバルリストを変更すべきではありません。そうでなければ、それは一度だけ動作します:) – miradulo

+0

をまあ、スターターでは、あなたの仕様では、関数は引数として二つのリストを取ることを要求していますが、唯一* 1つの引数*を提供しています。さらに、グローバルに定義されたリストを使用しています...呼び出し元コードとは何ですか?関数の引数がどのように使われているかを根本的に理解しているようです。 –

+1

あなたのファンクションには2つの引数が必要です。各リストに1つ。そして、あなたが世界的に返す予定のリストを定義しないでください。あなたの関数内でそれを行うと、ちょうどのみOP – gonxalo

答えて

1
x=[1,2,3] 
y=[2,4,6] 
res=[i*j for i,j in zip(x,y)] 

私はジップfunction.Theのzip()関数は、反復可能オブジェクトを取る(ゼロ以上とすることができる)が使用され、ここでやっていること、渡されたイテラブルに基づいて要素をまとめるイテレータを行い、イテレータを返します。タプルの数。

例:

numberList = [1, 2, 3] 
strList = ['one', 'two', 'three'] 

# No iterables are passed 
result = zip() 

# Converting itertor to list 
resultList = list(result) 
print(resultList) 

# Two iterables are passed 
result = zip(numberList, strList) 

# Converting itertor to set 
resultSet = set(result) 
print(resultSet) 

出力: [] {(2, 'two'), (3, 'three'), (1, 'one')}

+1

あなたは、いくつかの説明を提供する必要があります返す: – DeepSpace

+0

Deepspaceうん、私は編集しています私のポスト:) – Demonking28

2
  1. はあなたのインデントが正しいことを確認してください。 return xyはループの外側にある必要があります。

  2. xyグローバルリストを持っていないことが好ましいです。代わりに、関数内で定義します。それがグローバルである場合は、mul_listが複数回呼び出された場合、面白い結果が得られます。


    def mult_list(list_a, list_b): 
        xy = []  
        for i in range(0, len(list_a)):  
         xy.append(list_a[i] * list_b[i])  
        return xy 
    
    x = [1, 2, 3] 
    y = [2, 4, 6] 
    
    print(mult_list(x, y)) 
    # [2, 8, 18] 
    

しかし、それはリストにインデックスするために rangeを使用していないニシキヘビと考えられています。代わりに zipを使用することができます。

def mult_list(list_a, list_b): 
    xy = []  
    for num_a, num_b in zip(list_a, list_b):  
     xy.append(num_a * num_b)  
    return xy 

x = [1, 2, 3] 
y = [2, 4, 6] 

print(mult_list(x, y)) 
# [2, 8, 18] 
+0

それはデフmult_listしなければならない(x、y)に答えを投げるのではなく、それは – Demonking28

+0

@ Demonking28大丈夫、固定 – DeepSpace

+0

(Y)FYI私はダウンあなたの答えを投票1ないよ:)私はそれを投票し一人です:) – Demonking28