簡體   English   中英

如何在不刪除元素索引的情況下刪除元素?

[英]How to remove an element without deleting element's index?

我正在嘗試使用列表中的索引查找“ 3個最大的第一個數字”。

我有一個數字從010的列表。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM