2016-11-23 4 views
-3

パラメータがリストでない場合は、コメントを返す関数が好きです。それがリストであれば、私はいくつかの操作を実行したいと思います。以下関数に与えられたパラメータがリストであるかどうかを確認するにはどうすればよいですか?

はコードです:

def manipulate_data(*num): 
    if type(num) is not list: 
    return "Only lists allowed" 
    else: 
    positive = 0 
    for n in num: 
     if n >= 0: 
      positive = positive + 1 
+1

_what_は問題ですか? –

+3

'num'の型は常に' tuple'です。 '*'を削除すると、コードが動作します。 – vaultah

+0

'if isinstance(num、list):' – Chr

答えて

0

あなたがリストにすべての引数をパッケージ化している*のNUMS引数を使用することにより。 official documentationが便利です。

manipulate_data(1, 2, 3, 4, 5)manipulate_data([1, 2, 3, 4, 5])の結果はnum = ([1, 2, 3, 4, 5],)であり、これは1つの要素のみのタプルになります。 *を削除するか、引数として複数のリストを処理する必要がある場合は、ループを使用してすべてのタプル要素をチェックします。

def manipulate_data(num): 
    if type(num) is not list: 
    return "Only lists allowed" 
    else: 
    positive = 0 
    for n in num: 
     if n >= 0: 
      positive += 1 
    return positive 
def manipulate_multiple(*nums): 
    for num in nums: 
    manipulate_data(num) 

は、この機能はまだ

+0

あなたの答えが私に正しい方向を指摘していましたが、私がしたいことは、提供されたリストで操作を実行することです。たとえば、指定されたリストが[1,3,2,3]の場合、リストの要素の合計を返すことができるようにしたいとします。例は9を返します。コードは1を返します。 – Weirdsourcer

+0

@Weirdsourcer関数私が言及したようにすべてを返すわけではなく、それを数えていたようにポジティブ数を返すように編集しました。すべての要素を追加するには 'sum(num)'を試してください。 – Adirio

-1

OK何かを返していない覚えて、A、Bを除く、すべての左に位置パラメータをc

>>> def func(a, b, *c): 
...  print a 
...  print b 
...  print c 

に渡すとなり、それをよりきれいにします...

>>> func(1, 2, 3, 4, 5) 

1 
2 
(3, 4, 5) 
+0

答えは、なぜこのようなことが起こるのか、どこにドキュメントがあるのか​​を説明していません。少なくとも、グーグルのキーワードをいくつか与えていればよいはずです – Adirio

関連する問題