我正在尝试创建一个splitList
函数,该函数将选项作为输入并返回列表的正元素或负元素。
到目前为止,这就是我所拥有的:
def splitList([1,-3,5,7,-9,-11,10,2,-4], option)
- 如果 "option" = 0 我想获得所有积极的元素。
- 如果 "option" = 1 我想得到所有的负面元素。
这是一个稍微干燥的替代方案:
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
<
替换为ge
and le
。
我建议您使用更有意义的词来描述您对正整数或负整数的意图。这是一个示例函数:
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 既不被认为是积极的也不被认为是消极的——您可以轻松地将 or 调整为 or来>
调整您的特定需求。<
>=
<=
这是另一种选择:
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]
这是一种方法:
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()