일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 소프트웨어
- 2
- 네트워크보안
- 데이터분석
- 머신러닝
- I'm Sorry
- 자료구조
- 웹개발
- 보안
- 데이터구조
- 컴퓨터공학
- 데이터과학
- 네트워크
- 딥러닝
- 코딩
- 데이터베이스
- 컴퓨터과학
- 프로그래밍언어
- 자바스크립트
- 사이버보안
- 파이썬
- 알고리즘
- 컴퓨터비전
- 인공지능
- 소프트웨어공학
- 프로그래밍
- 클라우드컴퓨팅
- Yes
- 빅데이터
- 버전관리
- Today
- Total
스택큐힙리스트
기준을 충족하는 첫 번째 시퀀스 항목 찾기 [중복] 본문
이 질문은 이미 답변이 있습니다 :
Get the first item from an iterable that matches a condition
1. 답변
2. 질문
3. 안녕하세요
4. 감사합니다
5. 좋아요
6. 좋아합니다
7. 싫어요
8. 싫어합니다
9. 사랑해요
10. 미안해요
11. 이해했어요
12. 모르겠어요
13. 잘 모르겠어요
14. 제발 도와주세요
15. 어떻게 해야 해요?
16. 어려워요
17. 쉬워요
18. 화이팅!
7년 전에 마감되었습니다.
어떤 기준과 일치하는 첫 번째 목록 항목을 찾거나 반환하는 가장 우아하면서 효율적인 방법은 무엇일까요?
예를 들어, 객체 목록이 있고 obj.val==5 속성을 갖는 그 중 첫 번째 객체를 가져오고 싶다면, 리스트 컴프리헨션을 사용할 수 있지만 이는 O(n)이 발생하여 n이 크면 비효율적입니다. 이 조건이 충족될 때 break 루프를 사용할 수도 있지만, 더 파이썬스러운/우아한 해결책이 있을 것이라고 생각했습니다.
답변 1
객체에 대한 다른 인덱스나 정렬 된 정보가 없는 경우 해당 개체가 발견될 때까지 반복해야합니다.
next(obj for obj in objs if obj.val == 5)
하지만 이 방법은 완전한 리스트 함축보다 빨라요. 이 둘을 비교해보세요.
[i for i in xrange(100000) if i == 1000][0]
next(i for i in xrange(100000) if i == 1000)
첫 번째 것은 5.75ms가 필요하고, 두 번째 것은 58.3µs가 필요합니다(루프가 100배 짧기 때문에 100배 더 빠릅니다).
답변 2
중복된 내용의 질문입니다.첫번째 순서 항목이 기준을 충족시키는 경우 찾기
상황에 따라 컴퓨터 프로그래밍에서 일부 기능이 필요합니다. 그 중 하나는 주어진 조건에 따라 데이터를 검색하는 것입니다. 이 경우 중요한 작업은 해당 데이터 집합의 첫번째 항목을 찾는 것입니다.
이를 위해 일반적인 알고리즘은 데이터를 하나씩 검색하며 데이터가 조건을 충족하는지 확인하는 것입니다. 그러나 이 알고리즘은 작은 데이터 집합에서는 괜찮지만, 큰 데이터 집합에서는 속도가 느려질 수 있습니다.
따라서, 좀 더 효율적인 알고리즘이 필요합니다. 일부 프로그래머는 이를 위해 이진 검색 알고리즘을 사용합니다. 이진 검색 알고리즘은 데이터 집합이 정렬된 경우에 작동하며, 중간 값을 찾아 탐색 범위를 계속해서 반으로 줄여가며 검색하는 것입니다. 이런 방식으로, 데이터 집합의 첫번째 항목을 빠르게 찾을 수 있습니다.
하지만, 이진 검색 알고리즘은 데이터 집합이 정렬된 경우에만 작동하며, 항상 적용 가능한 것은 아닙니다. 따라서, 다른 방식의 알고리즘도 필요합니다. 예를 들어, 데이터가 정렬되어 있지 않은 경우, 첫번째 항목을 찾기 위해 데이터 집합을 모두 검사할 필요가 있습니다.
따라서, 첫번째 순서 항목이 기준을 충족시키는 경우를 찾기 위해서는 데이터가 어떻게 구성되어 있는지 확인하는 것이 중요합니다. 그런 다음, 데이터 구조에 맞는 적절한 알고리즘을 선택하여 원하는 결과를 얻을 수 있습니다.
요약하자면, 첫번째 순서 항목이 기준을 충족시키는 경우를 찾는 것은 컴퓨터 프로그래밍에서 중요한 작업 중 하나입니다. 이를 위해서는 데이터 구조와 조건에 따라 적절한 알고리즘을 선택해야 합니다.