给定两个数字列表,创建一个新列表,它应该只包含第一个列表中的奇数和第二个列表中的偶数

2024-09-29 06:23:03 发布

您现在位置:Python中文网/ 问答频道 /正文

学习python。。试着做。。但不知道如何修复它

def oddeven(n,List2):
    Result=[]
    N=int(input('Enter the no. of numbers: '))

    for i in range(0,N):
        n = int(input('The even number is: '))
        if (n % 2 == 0):
            Result.append(n)
            return result
    # print('List1', Result)

    for j in range(0,N):
        List2 = int(input('The odd number is: '))
        if (List2 % 2 != 0):
            Result.append(List2)
            return result
    # print('List2', Result)
    #     return Result

oddeven(n,List2)

错误消息: 奇偶(n,列表2) NameError:未定义名称“n”


Tags: theinnumberforinputreturnifis
3条回答

使用numpy.array()可以完全避免循环

from numpy import array
a=array([1,2,3,4,5,6]) # evens from here
b=array([7,8,9,10,11,12]) # odds from here

c = [*a[a%2 == 0], *b[b%2 != 0]]
print(c)

输出:

[2, 4, 6, 7, 9, 11]

这可能与您的代码不同,但我有一个建议,可以用另一种方法来完成同样的任务:

l1 = [2,5,8,12,4,6,87,32,65]
l2 = [1,6,3,90,4,5,32,4]
l3 = [n for n in l1 if n%2]+[n for n in l2 if not n%2]
print(l3)

输出:

[5, 87, 65, 6, 90, 4, 32, 4]

错误消息清楚地描述了问题:您尚未定义n。您可能应该从输入读取它,但忘记了实现它。List2也没有定义

实际上,您甚至不使用这些变量中的任何一个,所以您可以从参数和参数中删除它们

还有一个问题:为什么你认为两个列表的长度相同?您可能需要使您的解决方案更加灵活

相关问题 更多 >