반응형
"평균"이라고하는 1에서 5까지의 긴 부동 숫자 목록이 있고 a보다 작거나 b보다 큰 요소에 대한 인덱스 목록을 반환하고 싶습니다.
def find(lst,a,b):
result = []
for x in lst:
if x<a or x>b:
i = lst.index(x)
result.append(i)
return result
matches = find(average,2,4)
그러나 놀랍게도 "matches"에 대한 출력에는 많은 반복이 있습니다. <코드> [2, 2, 10, 2, 2, 2, 19, 2, 10, 2, 2, 42, 2, 2, 10, 2, 2, 2, 10, 2, 2, ...] .
왜 이런 일이 발생합니까?
해결 방법
목록에서 값의 처음 항목 만 찾는 .index ()
를 사용하고 있습니다. 따라서 인덱스 2와 인덱스 9에 값 1.0이있는 경우 .index (1.0)
은 항상 2
를 반환합니다. 목록에서 1.0
이 발생하는 횟수입니다.
def find(lst, a, b):
result = []
for i, x in enumerate(lst):
if x<a or x>b:
result.append(i)
return result
이것을 목록 이해력으로 축소 할 수 있습니다.
def find(lst, a, b):
return [i for i, x in enumerate(lst) if x<a or x>b]
참조 페이지 https://stackoverflow.com/questions/16685384
반응형
'파이썬' 카테고리의 다른 글
파이썬 urllib2.request () 호출에서 시간 제한 설정 (0) | 2021.01.16 |
---|---|
파이썬에서 날짜에 산술 연산을 수행하는 방법은 무엇입니까? (0) | 2021.01.16 |
파이썬 How to get a value from a cell of a dataframe? (0) | 2021.01.16 |
파이썬은 튜플에 항목을 추가합니다. (0) | 2021.01.16 |
파이썬 웹 사이트가 있는지 Python 확인 (0) | 2021.01.16 |
댓글