我试过这个,但问题是我不知道如何让程序处理列表中的每个值
a=[1,4,7,3,2]
def group(L):
li=[]
for i in L:
x= i/2
if x==int(x):
li.append(i)
i.remove(float(i))
print li
group(a)
答案 0 :(得分:3)
您可以使用tuple
一次返回两个列表,并使用模%
运算符根据元素是偶数还是奇数来放置元素(x % 2
是{{1}当0
为偶数时,x
为奇数时。
1
答案 1 :(得分:2)
我会使用mod(% 2
)来确定偶数/奇数(其中even % 2 == 0
,odd % 2 == 1
。请注意,无论是否检查偶数/奇数的符号,这都可以数学运算):
a=[1,4,7,3,2]
def group(L):
evens = []
odds = []
for elem in L:
if elem % 2 == 0:
evens.append(elem)
else:
odds.append(elem)
print evens, odds
# Call group with your input list
group(a)
答案 2 :(得分:1)
您可以通过仅使用两个列表来修改代码以使其工作(并使用modulo
运算符%
,这比检查x是否是int的实例更好:
a=[1,4,7,3,2]
def group(L):
l_even=[]
l_odd = []
for i in L:
if i % 2 == 0:
l_even.append(i)
else:
l_odd.append(i)
print l_even
print l_odd
group(a)
答案 3 :(得分:1)
您可以使用partition
recipe from itertools
:
from itertools import filterfalse, tee
def partition(pred, iterable):
'Use a predicate to partition entries into false entries and true entries'
# partition(is_odd, range(10)) --> 0 2 4 6 8 and 1 3 5 7 9
t1, t2 = tee(iterable)
return filterfalse(pred, t1), filter(pred, t2)
def is_odd(x):
return x % 2
evens, odds = partition(is_odd, [1, 4, 7, 3, 2])
print(*evens)
print(*odds)
哪些印刷品:
4 2
1 7 3
答案 4 :(得分:1)
这里的许多答案都是通过使用模函数来实现的。因此,这是一种仅通过检查最右位零的状态来检测奇数或偶数整数的方法。解决方案根据此位using this solution
的状态将每个条目追加到列表的偶数或奇数a = [1,4,7,3,2]
even,odd=[],[]
for i in a:
(even,odd)[i >> 0 & 1].append(i)
用3行代码提供正确的解决方案:
>>> even
[4, 2]
>>> odd
[1, 7, 3]
答案 5 :(得分:0)
你可以利用偶数和2的模数为零的事实,并且奇数和2的模数不为零:
a = [1,4,7,3,2]
def group(numbers):
evens = []
odds = []
for number in numbers:
if number % 2 == 0:
evens.append(number)
else:
odds.append(number)
return evens, odds
evens, odds = group(a)