Python 将整数列表拆分为两个列表-偶数和奇数元素
我尝试使用以下代码将整数列表拆分为两个列表,但问题是我不知道如何让程序处理列表中的每个值:Python 将整数列表拆分为两个列表-偶数和奇数元素,python,python-2.7,Python,Python 2.7,我尝试使用以下代码将整数列表拆分为两个列表,但问题是我不知道如何让程序处理列表中的每个值: 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) 只需使用两个列表即可修改代码以使其正常工作(使用
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)
只需使用两个列表即可修改代码以使其正常工作(使用
模运算符%
比检查x是否为int的实例要好):
只需使用两个列表即可修改代码以使其正常工作(使用模运算符%
比检查x是否为int的实例要好):
您可以使用a一次返回两个列表,并且modulo%
运算符根据元素是偶数还是奇数放置元素(x%2
在x
为偶数时为0
,在x
为奇数时为1
)
您可以使用a一次返回两个列表,并且modulo%
运算符根据元素是偶数还是奇数放置元素(x%2
在x
为偶数时为0
,在x
为奇数时为1
)
我将使用mod(%2
)来确定偶数/奇数(其中偶数%2==0
,奇数%2==1
。请注意,无论检查的偶数/奇数的符号是什么,这在数学上都有效):
我将使用mod(%2
)来确定偶数/奇数(其中偶数%2==0
,奇数%2==1
。请注意,无论检查的偶数/奇数的符号是什么,这在数学上都有效):
您可以利用偶数和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)
您可以利用偶数和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)
您可以使用:
其中打印:
42
1 7 3
您可以使用:
其中打印:
42
1 7 3
这里的许多答案都是使用模函数的。因此,这是一种不同的方法,只需检查最右边位的状态即可检测奇数或偶数整数。该解决方案根据该位的状态将每个条目追加到“偶数”或“奇数”列表中。
这样就可以用三行代码实现非常简洁的解决方案:
even,odd=[],[]
for i in a:
(even,odd)[i >> 0 & 1].append(i)
给出正确的解决方案:
>>> even
[4, 2]
>>> odd
[1, 7, 3]
这里的很多答案都是使用模函数的。因此,这是一种不同的方法,只需检查最右边位的状态即可检测奇数或偶数整数。该解决方案根据该位的状态将每个条目追加到“偶数”或“奇数”列表中。
这样就可以用三行代码实现非常简洁的解决方案:
even,odd=[],[]
for i in a:
(even,odd)[i >> 0 & 1].append(i)
给出正确的解决方案:
>>> even
[4, 2]
>>> odd
[1, 7, 3]
这是Python 2还是Python 3?因为i/2
在两个版本中的结果完全不同。在循环列表时不应修改列表,这可能会导致奇怪的问题。另外,我假设您想要L.remove()
,而不是I.remove()
。(提示:尽量使用比、L
和li
更好的变量名)@RocketHazmatL
不被此代码修改?python版本2。7@Riko在这种情况下,i/2
返回一个int
(向下舍入)。模块划分(i%2==0)
似乎是测试偶数/奇数的既定方法。这是Python 2还是Python 3?因为i/2
在两个版本中的结果完全不同。在循环列表时不应修改列表,这可能会导致奇怪的问题。另外,我假设您想要L.remove()
,而不是I.remove()
。(提示:尽量使用比、L
和li
更好的变量名)@RocketHazmatL
不被此代码修改?python版本2。7@Riko在这种情况下,i/2
返回一个int
(向下舍入)。模除法(i%2==0)
似乎是测试偶数/奇数的既定方法。不完全是。在Python2上,由于isinstance(i/2,int)
ifisinstance(i,int)
,您将获得l\u偶数中的所有数字。感谢您的提醒!我使用的是python 3:)修复了它,只使用mod而不使用mod。在Python2上,由于isinstance(i/2,int)
ifisinstance(i,int)
,您将获得l\u偶数中的所有数字。感谢您的提醒!我使用的是python 3:)修复了它,改为只使用mod。。。这是Python的索引魔力,它甚至可以用于输入列表中的负整数。@dhke这是因为模的工作方式,而不是索引magic@sgrg人力资源管理。对,Python的%
返回正数。我被固定在C型模上。我的错。。。。这是Python的索引魔力,它甚至可以用于输入列表中的负整数。@dhke这是因为模的工作方式,而不是索引magic@sgrg人力资源管理。对,Python的%
返回正数。我被固定在C型模上。我的错。
>>> even
[4, 2]
>>> odd
[1, 7, 3]