2017-12-24 18 views
1

비용 유형이 포함 된 간단한 파이썬 목록이 있고 for 루프를 사용하여 이러한 비용을 반복하고 싶다고합시다. 매 반복마다 지표가 정확한 비용 유형을 산출하면 카운터는 1 씩 앞당겨집니다. 아래 코드를 사용하여이 값을 쉽게 작성할 수 있지만 빠른 for 루프를 사용하지 않습니다.중첩 된 if 문을 사용하여 루프를 작성하는 Python 방법

array = ['Groceries', 'Restaurant', 'Groceries', 'Misc', 'Bills'] 
sum = 0 
for i in range(len(array)): 
    if array[i] == 'Groceries': 
     sum += 1 

이 루프를 작성하여 실행 속도를 높일 수있는 방법이 있습니까? 아래의 코드 스 니펫처럼 보이는 예제를 보았습니다. 참고 : 아래의 코드 조각은 작동하지 않습니다. 이전에 보았지만 완전히 이해하지 못하는 가속화 된 형식의 예일뿐입니다.

sum = [sum + 1 for i in array if array[i] == 'Groceries'] 

답변

1
for i in range(len(array)): 

확실히 하지 배열 반복의 파이썬 IC 방법입니다. VisualBasic 사고 방식으로 자유롭게해야합니다. 당신이 루프에서 할 것은 당신에게 달려

array = ['Groceries', 'Restaurant', 'Groceries', 'Misc', 'Bills'] 
for eachItem in array: 
    ... 

:

당신이 배열을 반복 다음과 같이 그냥 반복 할 경우

. 당신이 식료품 목록에, 당신은이 작업을 수행 할 수 howmany 계산하려면 :

array = ['Groceries', 'Restaurant', 'Groceries', 'Misc', 'Bills'] 
groceriesTotal = 0 
for eachItem in array: 
    if eachItem == 'Groceries': 
     groceriesTotal = groceriesTotal + 1 

이 다른 사람이 읽을 수 있도록 간단하고 명확하고 충분히 파이썬입니다.

1

당신은 이것을 위해 목록 이해가 필요하다고 생각하는 것 같습니다. 그러나리스트 comprehensions은리스트를 생성하고 스칼라를 원한다. 시도하십시오 array. count("Groceries"). 그냥 계산에 관하여 경우

2

, collections.Counter 시도 :

from collections import Counter 


array = ['Groceries', 'Restaurant', 'Groceries', 'Misc', 'Bills'] 

counts = Counter(array) 

print(counts) 
# Counter({'Groceries': 2, 'Bills': 1, 'Restaurant': 1, 'Misc': 1}) 

print(counts['Groceries']) 
# 2