我需要删除列表中的所有奇数,并返回结果。
例如,purify(1,2,3)应该返回2
我的职责是
def purify(num):
for x in num:
if x%2 != 0:
num.remove(x)
return num因此,对纯化(4,5,5,4)。当它应该返回4,4时,它返回4,5,4。
发布于 2015-03-22 01:52:00
如果让我这样做,我的答案是:
def purify(n):
new_array = []
for index in range(0, len(n)):
if n[index] % 2 != 0:
new_array.append(n[index])
return new_array
a = [4,5,5,4]
print purify(a)接下来,让我解释一下您的代码为什么会发生错误。
当for循环扫描每个元素时,工作流如下所示:
结果: 4,5,4
怪不得。这5种元素失去扫描功能。
发布于 2015-03-22 01:23:42
调用remove时会丢失/使对列表的引用无效。
实现相同行为的一种方法是创建一个新的列表。
def purify(old_list):
new_list = []
for x in old_list:
if x % 2 == 0:
new_list.append(x)
return new_list或者,你也可以做一个清单理解,以一种更毕加索的方式来表达这一点。
def purify(old_list):
return [for x in old_list if x % 2 == 0]发布于 2015-03-22 01:17:31
使用列表理解。这就是他们设计的目的。从医生那里:
列表理解提供了一种创建列表的简洁方法。常见的应用程序是创建新的列表,其中每个元素是应用于另一个序列或可迭代的每个成员的某些操作的结果,或者创建满足特定条件的元素的子序列。
>>> L = [1,2,3,4,5]
>>> [x for x in L if x%2==0]
[2, 4]
>>> L = [4,5,5,4]
>>> [x for x in L if x%2==0]
[4, 4]作为一项职能:
>>> def purify(nums):
... return [x for x in nums if x%2==0]
...
>>> purify([4,5,5,4])
[4, 4]https://stackoverflow.com/questions/29189890
复制相似问题