python:all&any関数


API
all(iterable)
return bool(全 ''/0)
any(iterable)
return bool(少なくとも1つの ''/0)
せっけいしけん
解決すべき問題
  • all any の定義?
  • iterable のデータ型は関数結果に影響しますか?
  • は、いずれかのiterable に対して、2つの関数の戻り結果が相補的であると推測する.

  • 実験構想.
  • は実験1を設置し、all の戻り結果を探究する.同時にiterable のデータ型を置き換えて問題2を探究する.
  • シミュレーション実験1、実験2を設置し、any の戻り結果を探究する.
  • 実験3を設定し、先行知識(補完できればpythonは2つの関数を内蔵する必要はない)に基づいて、反例を挙げて問題3の推測が正しくないことを証明する.

  • じっけんコード
    実験1
    # coding=utf-8
    
    ### list
    # char list
    assert all(['a', 'b']) == True
    assert all(['a', 'b', '']) == False
    # int list
    assert all([1, 2]) == True
    assert all([1, 2, 0]) == False
    #    list
    assert all(['a', 'b', 0]) == False  #       0   '' ,      False  
    assert all([1, 2, '']) == False  #       0   '' ,      False  
    # empty list
    assert all([]) == True  #       0   '' ,      True
    
    ### tuple
    # char list
    assert all(('a', 'b')) == True
    assert all(('a', 'b', '')) == False
    # int tuple
    assert all((1, 2)) == True
    assert all((1, 2, 0)) == False
    #    tuple
    assert all(('a', 'b', 0)) == False
    assert all((1, 2, '')) == False
    # empty tuple
    assert all(()) == True

    実験2
    # coding=utf-8
    
    ### list
    # char list
    assert any(['a', 'b', '']) == True
    assert any(['', '', '']) == False
    # int list
    assert any([1, 2, 0]) == True
    assert any([0, 0, 0]) == False
    #    list
    assert any(['a', 'b', 0]) == True
    assert any([1, 2, '']) == True
    assert any([0, '']) == False   #      "  0" ,     "  ''" ,return False
    # empty list
    assert any([]) == False   #      "  0" ,     "  ''" ,return False
    
    ### tuple
    # char list
    assert any(('a', 'b', '')) == True
    assert any(('', '', '')) == False
    # int tuple
    assert any((1, 2, 0)) == True
    assert any((0, 0, 0)) == False
    #    tuple
    assert any(('a', 'b', 0)) == True
    assert any((1, 2, '')) == True
    assert any((0, '')) == False
    # empty tuple
    assert any(()) == False

    実験3
    iterable = [1]
    assert all(iterable) == any(iterable)

    じっけんけってい
  • all :return bool(すべて ''/0);any :return bool(少なくとも1つの ''/0があります).
  • iterable のデータ型は、関数結果に影響を与えません.
  • はいずれかのiterable に対して、2つの関数の戻り結果が相補的ではない.