2013-03-19 2 views
1

두 개의 입력, 즉리스트와 아이템 (문자열, int, float 일 수 있음)을 취하는 함수를 정의하려고 시도하고 있습니다.리스트에 항목이 나타나는 횟수를 반환합니다 .파이썬에서리스트의 원소 계산하기

def count(sequence,item): 
    for all x in sequence: 
     if x != item: 
      while x in sequence: 
       sequence.remove(x) 
    return len(sequence) 

그러나, 이것은 단지 순서의 항목 같지 않은 첫 번째 요소를 삭제하고이를 삭제 : 여기에 내 코드입니다. 예를 들어 count ([4,8,3], 3)는 목록에서 4 개만 삭제하기 때문에 2를 반환합니다. 나는 for 루프가 그것을 처리하기로되어 있다고 생각했다.

제안 사항?

답변

3

그것은 count 방법을 사용하여,이만큼 간단합니다 : 문서에서

the_list.count(the_item) 

:

list.count(x) 반환 시간 x의 수는 목록에 나타납니다. 나는 그것을 얻지 않는다, 왜 은 단순히 계산하기로했다 함수에 요소를 삭제 -

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

그리고 그런데

: 예를 들어

?

0

당신이 목록을 반복하고이 목록의 길이를 변경할 때 그것은 위험하다 (제거()를 사용)

귀하의 경우에는

, 당신이 목록 '순서'를 반복하는, 처음에 당신은 얻을 것이다 sequence [0] (즉, 4). 그리고 당신은 그것을 제거합니다. 그런 다음 시퀀스를 가져옵니다 [1]. 당신은 시퀀스 [1]이 8이라고 가정합니다. 그러나 이전에 4를 제거했기 때문에 시퀀스 [0]은 8이고 시퀀스 [1]은 3입니다. 따라서 얻는 것은 8이 아니라 3입니다. 시퀀스에서 8. 너는 그것을 무시한다.

관련 문제