返回列表的正面或负面元素的函数

时间:2012-09-26 14:32:48

标签: python list

我正在尝试创建一个splitList函数,该函数将选项作为输入并返回列表的正面或负面元素。

到目前为止,这就是我的全部内容:

def splitList([1,-3,5,7,-9,-11,10,2,-4], option)
  • 如果“选项”= 0,我想得到所有积极因素。
  • 如果“选项”= 1,我想得到所有的负面因素。

4 个答案:

答案 0 :(得分:2)

这是一个轻微的DRYer替代方案:

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)]

如果您希望它返回非正/非负,您可以替换gt& lt gele

。{/ 1}

答案 1 :(得分: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既不是正面也不是负面 - 您可以轻松调整><>=<=进行调整你的特殊需求。

答案 2 :(得分: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]

答案 3 :(得分:0)

这是一种方法:

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()