如何对整数列表中的奇数进行排序,但将偶数保留在原始位置?
示例:
sortArray([5, 3, 2, 8, 1, 4]) == [1, 3, 2, 8, 5, 4]
我的代码:
def sort_array(source_array):
odd_numbers = [n for n in source_array if n%2!=0]
odd_numbers = sorted(odd_numbers)
如何将source_array
中奇数的索引与odd_numbers
中的奇数转换?
答案 0 :(得分:10)
看起来你几乎就在那里 - 你可以使你的排序奇数成为可迭代的,并使用原始偶数或下一个排序的奇数重建你的源列表,例如:
float(tradedQty/1e6)
// ^^^^^^^^^ ^^^
// string float
// ^^^^^
// too late
答案 1 :(得分:2)
更多行但更具可读性
a = [5, 3, 2, 8, 1, 4]
b = sorted([item for item in a if item%2 != 0])
odd_int = 0
for i in range(len(a)):
if a[i] %2 != 0:
a[i] = b[odd_int]
odd_int += 1
答案 2 :(得分:0)
如果您打开使用numpy,可以使用np.where
获取奇数的索引,对奇数进行排序,并使用先前获得的索引更新数组,分配给奇数的排序数组:
function execute() {
( echo prepare_something ; cat ) | ssh user@host /bin/bash
}
答案 3 :(得分:0)
def sort_array(source_array):
odd_numbers = sorted([n for n in source_array if n%2!=0])
c = 0
res = []
for i in source_array:
if i %2!=0:
res.append(odd_numbers[c])
c += 1
else:
res.append(i)
return res