[英]How to change the index of an element in a list/array to another position/index without deleting/changing the original element and its value
[英]How to remove an element without deleting element's index?
我正在嘗試使用列表中的索引查找“ 3個最大的第一個數字”。
我有一個數字從0
到10
的列表。
numbers=[3,5,2,3,3,5,6,2,1,2,3,4,5,6,7]
使用此數字:
2號出現:5次
數字3出現:4次
數字4出現:3次
我有一個計算數字百分比的列表
numbersInPercentage=[(100/len(numbers))*(numbers).count(0),
(100/len(numbers))*(numbers).count(1),
...
(100/len(numbers))*(numbers).count(10)]
我的算法(代碼塊),用於查找3個最大的數字
#first biggest
largest_integer = max(numbersInPercentage)
index = numbersInPercentage.index(max(numbersInPercentage))
print('Number is :', index," by ",largest_integer,"%")
numbersInPercentage.remove(largest_integer) # this part killing me
#second biggest
second_largest_integer = max(numbersInPercentage)
index = numbersInPercentage.index(max(numbersInPercentage))
print('Number is :', index," by ",second_largest_integer,"%")
numbersInPercentage.remove(second_largest_integer) # this part killing me
#thirdbiggest
third_largest_integer = max(numbersInPercentage)
index = numbersInPercentage.index(max(numbersInPercentage))
print('Number is :', index," by ",third_largest_integer,"%")
numbersInPercentage.remove(third_largest_integer) # this part killing me
輸出如下:
數字是:2 x 25.0%
數字是:2 x 20.0%
數字是:2 x 15.0%
這部分代碼將刪除該索引,因此我當前的索引將一一減少。
numbersInPercentage.remove(largest_integer)
它應該看起來像:
數字是:2 x 25.0%
數字是:3 x 20.0%
數字是:4 x 15.0%
我的代碼很好地找到了當前索引最大的數字,除了刪除了殺死我的索引方法。
我需要分配其他刪除索引的東西,或者我必須刪除沒有索引值的東西。
對於具有索引的前3個最大數字,您可以執行以下操作:
numbers=[3,5,2,3,3,5,6,2,1,2,3,4,5,6,7]
res = [(el, numbers.index(el)) for el in sorted(list(set(numbers)), reverse=True)[:3]]
輸出:
(7, 14), (6, 6), (5, 1)
您可以使用collections.Counter
:
>>> from collections import Counter
>>> sorted(Counter(numbers).items(), key=lambda x: x[1], reverse=True)[:3]
[(3, 4), (5, 3), (2, 3)]
^ ^
| |
number
|
count
這將返回數字及其計數。 如果需要百分比,則可以稍后進行轉換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.