1

splitListオプションを入力として受け取り、リストの正または負の要素を返す関数を作成しようとしています。

これまでのところ、これは私が持っているすべてです:

def splitList([1,-3,5,7,-9,-11,10,2,-4], option)
  • "option" = 0 の場合、すべての正の要素を取得したいと思います。
  • "option" = 1 の場合、すべての負の要素を取得したいと思います。
4

4 に答える 4

2

少し乾燥機の代替品は次のとおりです。

import operator

def split_list(iterator, positive=True):
    sign_test = operator.gt if positive else operator.lt
    return [i for i in iterator if sign_test(i, 0)]

代わりに非正/非負を返したい場合は、gtltgeandに置き換えることができますle

于 2012-09-27T01:13:44.503 に答える
1

正または負の整数の意図を説明するには、より意味のある言葉を使用することをお勧めします。関数の例を次に示します。

def split_list(data_set, positive=True):
    if positive:
        return [i for i in data_set if i > 0]
    return [i for i in data_set if i < 0]

example = [1,-3,5,7,-9,-11,0,2,-4]
print split_list(example, True)
print split_list(example, False)

戻り値:

[1, 5, 7, 2]
[-3, -9, -11, -4]

補足として、この例では、0 が正でも負でもないと見なされていると想定しています。特定のニーズに合わせて>または<を簡単に調整>=できます。<=

于 2012-09-26T16:54:59.220 に答える
0

1 つのアプローチを次に示します。

def split_list():
    pos = []
    neg = []

     for i in alist:
        if i < 0:
            pos.append(i)
     print pos
     for i in alist:
        if i > 0:
            neg.append(i)
     print neg



def main():
    alist = [54,26,-93,-17,-77,31,44,55,20]
    manipulate_data(alist)

if __name__ == '__main__':
    main()
于 2016-09-22T17:10:17.000 に答える
0

別の方法を次に示します。

import operator

def split_list(iterator, positive=True, sign_test=(operator.lt, operator.gt)):
    return [i for i in iterator if sign_test[positive](i, 0)]

次のように呼び出します。

>>> split_list([1, -2, 4, 0, -4], False)
[-2, -4]

また:

>>> split_list([1, -2, 4, -0, 4], True, (operator.lt, operator.ge))
[1, 4, 0]
于 2012-09-27T03:23:11.473 に答える