将列表拆分为两个奇数条目和偶数条目列表

时间:2014-05-10 15:19:59

标签: python python-2.7 for-loop infinite-loop

我正在使用python 101 4.1版

输入的例子是(1,4,6,2,53,7)

需要的输出是偶数(2,4,6)奇数(1,7,53)

我需要在这个问题中使用一个函数,只有一个输入,这将是列表,我认为一个循环将有所帮助,但我仍然无法得到它。我尝试使用以下代码:

from math import *
from string import *
def odd_even(L):
    list1=raw_input()
    list1=list1.split(" ")
    even=[]
    odd=[]
    for x in list1:
        if x%2==0:
            even.append(L)
        else:
            odd.append(L)
    return even,odd

L=input()
print odd_even(L)

5 个答案:

答案 0 :(得分:1)

输入数字并对其进行排序:

def odd_even(numbers):
    result = [], []
    for number in numbers:
        result[number%2].append(number)
    return result

def main():
    numbers = raw_input('Enter numbers:')
    numbers = map(int, numbers.split())
    even, odd = odd_even(numbers)
    print "even", even
    print "odd", odd

if __name__ == '__main__':
    main()

答案 1 :(得分:1)

以下是使用键"偶数"返回字典的解决方案和"奇怪":

def odd_even(L):
   even=[num for num in L if num % 2 == 0]
   odd=[num for num in L if num % 2 != 0]
   return {"even": even, "odd": odd}

dict = odd_even([1,2,3,4,5])
print dict["even"]
print dict["odd"]

答案 2 :(得分:0)

现在发布一些代码很好;编辑第一个问题会更好。

你快到了:

# Module import is not necessary.

def odd_even(L):
    #    list1=raw_input()       # <--- no need for raw input here
    #    list1=list1.split(" ")  # <--- nor here
    even=[]
    odd=[]
    for x in L:
        if x%2==0:
            even.append(x)
        else:
            odd.append(x)
    return even,odd

L= range(20)                      # <--- can replace with raw_input if you need to
print odd_even(L)

答案 3 :(得分:0)

  1. 为什么input()在您的功能中?
  2. 当您使用input()时,您会得到一个字符串,但您的函数需要整数,因此您必须对输入列表的每个元素应用int()

  3. def odd_even(L):
        even=[]
        odd=[]
        for x in L:
            if x%2==0:
                even.append(x)
            else:
                odd.append(x)
        return even, odd
    
    
    L = input()
    L = L.split(" ")
    L = list(map(int, L))
    print(odd_even(L))
    

答案 4 :(得分:0)

使用条件表达式相同但不同:

def is_even(n):
    return not n % 2

def split_odd_even(L):
    '''Split a list of numbers into odds and evens.

    L --> list
    returns tuple of two lists
    '''
    odd, even = list(), list()
    for n in L:
        even.append(n) if is_even(n) else odd.append(n)
    return odd, even

print split_odd_even(range(20))
>>> ([1, 3, 5, 7, 9, 11, 13, 15, 17, 19], [0, 2, 4, 6, 8, 10, 12, 14, 16, 18])