2017-01-19 5 views
1

私はPythonを学んでいますが、私は答えを期待していません。本当に助けが必要です。Pythonで異なるペアとその製品を見つける

私はリストから私がいることを確認するためにチェックする必要があることを複数のリストを与えている:それは、リスト内の複数の整数を持っている)

a)はそれは空のリスト

Bではありません

c)リスト内の整数が、偶数のペアをチェックすることによって、偶数のプロダクト値または奇数のプロダクト値を持つかどうかを確認します。たとえば、list1 = [1,2,3]です。製品が均一であるため、これはFalseを返します。 list2 = [3,2,3]は、2つの奇数対の積が奇数であるため、Trueを返す。

これらは、私のアイデアのいくつかである:それはあなたが入力し空のリストである場合

a)にチェックするために:

if not myList: 
    return(False) 

または

if myList != []: 
    return(True) 

B)

if myList != 1: 
    return(True) 

または

if int in myList < 0 and if int in myList > 2: 
    return(False) 

C)

if len(myList) % 2 == 0: 
    return(False) 

2がある場合でも、それもどちらかの方法を返します倍増ので。私は奇妙な製品を探したいだけです。

if len(myList) % 2 != 0: 
     for i in myList: 
      if i % i == 1: 
       return(True) 
      else: 
       return(False) 

私はこれをテストする必要がありますが、実際にはこれを書いています。ペアを見つけることはかなり難しいです。

私は、最終結果が1の場合、それらは同じ番号であると考えましたか?このサイトの初めてのユーザーで、標準的な質問のプロトコルに精通していない(私はルールを読んでいた)。

申し訳ありませんが、これは長いと私を助けてくれてありがとう!

+0

あなたが上に示したすべてのオプションのうちの最も慣用的な "pythonic"は 'もしそうでなければ 'です。 –

+1

'2つの奇数対の積が奇数であるので'私はここで必要とされる論理をかなり理解していない! –

+0

私も理解していないc)。リスト内のすべての整数の積が偶数か奇数かをチェックすることを指していますか? –

答えて

1

A)それはそれは内に複数の整数を持っている(ただ括弧をドロップ)

if not myList: 
    return False 

b)にあなたの空のコンテナのチェックは罰金だ空のリスト

ではありませんリスト

これは機能しません。番号チェックですあなたの代わりに(また、ケースの世話をしている「」を)したいことがあり

if myList != 1: 
    return(True) 

:リストの長さのチェックをotの

if len(myList) < 2: 
    return False 

C)リスト内の整数でも持っているかどうかをチェック明確なペアをチェックすることによって奇数の製品値を得るか、または です。

この1つはあなたの説明はあなたの例と矛盾思えるようトリッキーです:

たとえばリスト1 = [1,2,3]。 製品が偶数であるため、これはFalseを返します。 list2 = [3,2,3]は、2つの奇数対の製品 が奇数であるため、Trueを返します。

どちらのリストにも製品を持っていますが、一方及び他方のためのFalseためTrueを返します。

あなたの以降の説明では、注目することによって掛けることなく、あなたはパリティを決定したい意味すると思われるすべての奇数の要素=奇数の製品(真)と任意の偶数の要素= 2つの可能な述語につながる(偽)でも製品:

def are_all_odd(myList): # odd product True; even product False 
    return all(element % 2 for element in myList) 

def is_any_even(myList): # even product True; odd product False 
    return any(element % 2 == 0 for element in myList) 

しかし、係数演算子%は、乗算と同じくらい高価な除算です。私たちは、このビット単位行うことができないようにするには:any()all()への入力として発電機を使用して

def are_all_odd(myList): # odd product True; even product False 
    return all(element & 1 for element in myList) 

def is_any_even(myList): # even product True; odd product False 
    return any(~element & 1 for element in myList) 

すると、これらは、すぐに答えを求めることができるように停止することを意味します。ただし、テストの回数を最小限に抑えるために、データが最適な順序にない可能性があります。

関連する問題