2014-03-04 3 views
1

리스트에서 어떤 일이 발생하는 시간을 계산하려고합니다. 변수를 설정하여 각 색인을 이동하고 개수를 계산할 수 있습니까? 나는 각자가 목록에 얼마나 많은 시간을 추가하는지 알고 싶다.
이렇게 보이길 바랍니다. while 루프는 잊어 버리십시오. 루프를 반복하고 있음을 보여주는 것입니다. 예제. 그리고 가능한 경우 라이브러리를 가져 와서 바로 가기를 만들거나 아니면 유일한 방법입니다.파이썬 카운트 및리스트에 추가하기

while True: 
    index = 0 
    L = ["brown", "brown", "brown", "red", "red", "yellow", "yellow"] 
    numberOfTimes = L.count([index]) 
    index = index + numberOfTimes 
    numberOfTimesList.append(numberOfTimes) 

나는 다음 거라고 또 다른 목록을 만들고 싶어 그래서 난 단지 이런 식으로 한 번에 갈색 볼 거라고 :

["brown", "red", "yellow"] [3, 2, 2] 

답변

5

사용 collections.counter을 :

from collections import Counter 
L = ["brown", "brown", "brown", "red", "red", "yellow", "yellow"] 
cnt = Counter(L) 
print cnt 
print cnt.keys(), cnt.values() 

출력 :

Counter({'brown': 3, 'yellow': 2, 'red': 2}) 
['brown', 'yellow', 'red'] [3, 2, 2] 

결과 coun ter 객체는 cnt.most_common(n)과 같은 편리한 루틴과 함께 가장 자주 사용되는 요소와 수를 n으로 반환하여 사전으로 조작 할 수 있습니다.

0

쉽게이 작업을 수행 할 수 있습니다

[1, 2, 3, 4, 1, 4, 1].count(1) 

위의 코드는 숫자 1이 목록에 나타납니다 횟수를 계산합니다. 당신은 당신의 명부를 위해 동일을 할 수있다.

귀하의 경우에 이렇게하십시오. 파이썬의 기본으로

for thing in L: 
    # Count variable represents the number of times the thing variable was found 
    count = L.count(thing) 
+0

'count'은 높은 수준의 도구를 useing 전에 파이썬의 기본을 잘 알고 있어야 더 좋을 것 같아 한 항목의 수를 계산할 때 유용하지만 모든 항목을 계산할 때'collections.Counter'의 선형 성능에 비해 이차 런타임이 떨어집니다. – user2357112

+0

@ user2357112 그게 사실입니다. – turnt

0

:

첫째, 루프 또는 반복에 대한 Pythonic 방법은 다음과 같습니다

In [5]: L = ["brown", "brown", "brown", "red", "red", "yellow", "yellow"] 

In [6]: for i in L: 
    ...:  print i 
    ...:  
brown 
brown 
brown 
red 
red 
yellow 
yellow 

둘째, 발생, 파이썬에서 가장 기본적이고 강력한 도구를 계산 : dict 도움이 될 것입니다. @ YS-L로 collections.Counter를 사용

In [8]: counts = {} 

In [9]: for i in L: 
    ...:  counts[i] = (counts[i] + 1) if (i in counts) else 1 
    ...:  

In [10]: counts 
Out[10]: {'brown': 3, 'red': 2, 'yellow': 2} 

In [11]: counts.keys() 
Out[11]: ['brown', 'yellow', 'red'] 

In [12]: counts.values() 
Out[12]: [3, 2, 2] 

더 귀하의 질문에 대한 설득되고 말했지만, 나는

+1

[조건식]을 시뮬레이트하기 위해'and' /'or'를 사용하지 마십시오 (http://legacy.python.org/dev/peps/pep-0308/). 'and'/'또는'해킹은 버그가 발생하기 쉽고 불필요합니다. – user2357112

+1

더 나아가 모든 것을''collections.Counter''에 위임하기 전에''counts = collections.defaultdict (int)''를 사용하는 것입니다. –

+0

@ user2357112 감사합니다. 답변이 수정되었습니다. 나는'and/or'가 버그가 발생하기 쉽다는 것을 알았습니다. true의 경우는'0', false의 경우는'1'을 반환해야합니다. 하지만 나는 '조건식'을 모른다. – shuiyu