使用 lambda 将列表拆分为奇数和偶数两个列表

问题描述 投票:0回答:2

这就是我所拥有的:

ev_filt = filter(lambda x: x % 2 == 0, list1)
od_filt = filter(lambda x: x % 2 != 0, list1)

ev_list = list(ev_filt)
od_list = list(od_filt)

length = int(input("Enter the number of words yer gon pass"))

# initialize the list using for loop
for i in range(0, length):
   item = int(input("Pass a number bro" + str(i+1) + " :"))
   list1.append(item)
   
print(ev_list)
print(od_list)

我尝试继续使用此模板,但不起作用。

为什么?

我该如何解决这个问题?

python lambda split
2个回答
2
投票

正如我在评论中提到的,代码按顺序从上到下运行。在初始化之前以及列表中存在值之前,您可以将

list1
排序为奇数和偶数。交换顺序,你应该是金色的:

length = int(input("Enter the number of words yer gon pass"))

# initialize the list using for loop
list1=[]
for i in range(0, length):
   item = int(input("Pass a number bro" + str(i+1) + " :"))
   list1.append(item)

ev_filt = filter(lambda x: x % 2 == 0, list1)
od_filt = filter(lambda x: x % 2 != 0, list1)

ev_list = list(ev_filt)
od_list = list(od_filt)

   
print(ev_list)
print(od_list)

2
投票

使用列表理解:

listTwo = [num for num in listOne if num % 2 == 0]
listThree = [num for num in listOne if num % 2 != 0]

这是在 Python 中创建过滤列表的更简洁、更有效的方法。在这里,listOne 将是您的原始列表,您将创建包含偶数的 listTwo 和包含奇数的 listThree。这种方法被认为更“Pythonic”,并且通常因其可读性和简洁性而受到青睐。

© www.soinside.com 2019 - 2024. All rights reserved.