如何解决在对值进行排序时如何使索引和值一起移动?
我用python语言编写了这段代码:
utilizArray = [0.7,0.6,0.4,0.3,0.8]
M = []
for i in range(len(utilizArray)):
M.append([i,utilizArray[i]])
print(M)
print()
for passnum in range(len(utilizArray) - 1,-1):
for i in range(passnum):
if M[i][1] < M[i+1][1]:
temp = M[i][1]
M[i][1] = M[i+1][1]
M[i+1][1] = temp
print()
print(M)
以下是输出:
[[0,0.7],[1,0.6],[2,0.4],[3,0.3],[4,0.8]]
[[0,0.8],0.3]]
我希望输出是这样的(每个值及其对应的索引):
[[4,[0,0.3]]
您能给我推荐一个代码吗?
解决方法
您应该根据第一个元素进行比较,但将整个元素作为一个单位交换:
utilizArray = [0.7,0.6,0.4,0.3,0.8]
M = []
for i in range(len(utilizArray)):
M.append([i,utilizArray[i]])
print(M)
print()
for passnum in range(len(utilizArray) - 1,-1):
for i in range(passnum):
if M[i][1] < M[i+1][1]:
# the [1]s from these lines were removed
temp = M[i]
M[i] = M[i+1]
M[i+1] = temp
print()
print(M)
或者,只需使用以第二个元素作为键的内置sort
函数(此方法也比气泡排序快得多):
utilizArray = [0.7,utilizArray[i]])
print(M)
print()
M.sort(key=lambda x: x[1],reverse=True)
print()
print(M)
,
您可以使用枚举获取列表元素的索引:
array = ['a','b','c']
for index,letter in enumerate(array):
print(index,letter)
Output:
>0 a
>1 b
>2 c
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。