【发布时间】:2018-04-26 00:41:20
【问题描述】:
我正在尝试解决这个问题,其中,我只需要对数组(python 列表)的奇数进行排序,并让偶数成为。
我解决这个问题的想法:
- 将奇数和偶数过滤到单独的列表中。
- 对奇数数组进行排序,最后用偶数数组对其进行扩展。
我的代码:
def sort_array(source_array):
# Return a sorted array.
odd_arr = list(filter(lambda x: x % 2 != 0, source_array))
even_arr = list(filter(lambda x: x % 2 == 0, source_array))
return odd_arr.sort().extend(even_arr)
面临的问题:Python 抛出 AttributeError
追踪:
Traceback (most recent call last):
File "main.py", line 3, in <module>
Test.assert_equals(sort_array([5, 3, 2, 8, 1, 4]), [1, 3, 2, 8, 5, 4])
File "/home/codewarrior/solution.py", line 8, in sort_array
return odd_arr.sort().extend(even_arr)
AttributeError: 'NoneType' object has no attribute 'extend'
现在每当我 print(odd_arr) 时,我都会得到列表,但当我 print(odd_arr.sort()) 时,我会得到一个 NoneType 对象。我的印象是 sort 和 extend 是列表类方法。我哪里错了?这必须是我自己做的。
编辑: 改代码
def sort_array(source_array):
odds = [n for n in source_array if n % 2 != 0]
evens = [n for n in source_array if n % 2 == 0]
print(odds) # List
print(evens) # List
print(sorted(odds).extend(evens)) # None
return sorted(odds).extend(evens)
【问题讨论】:
-
您是否愿意使用第三方库(例如
numpy)?或者你想这样做吗? -
我想保留原版,这将加强我对语言的理解。
标签: python python-3.x