我正在尝试对-1停滞的列表进行排序,其余的数字按高度排序。输出应为[-1,150,160,170,-1,-1,180,190]。
a = [-1, 150, 190, 170, -1, -1, 160, 180]
z = [n for n, m in enumerate(a) if m == -1]
y = sorted(a)
print(y)
print (z)
以下是结果
y=[-1, -1, -1, 150, 160, 170, 180, 190]
z=[0, 4, 5]
output should be= [-1, 150, 160, 170, -1, -1, 180, 190]
答案 0 :(得分:3)
您可以对不是 -1 的元素进行排序,并将其填充回原始列表:
a = [-1, 150, 190, 170, -1, -1, 160, 180]
s = sorted(x for x in a if x != -1)
s
# [150, 160, 170, 180, 190]
for i, v in enumerate(a):
if v != -1:
a[i] = s.pop(0)
a
# [-1, 150, 160, 170, -1, -1, 180, 190]
答案 1 :(得分:0)
我认为没有办法使用sort来做到这一点。我以为你可以这样做:
nOnes = []
for i,k in enumerate(a):
if k == -1:
nOnes.append((i,a.pop(i)))
y = sorted(a)
for m,n in nOnes:
y.insert(m,n)
它不是令人难以置信的pythonic,但它确实有效。