2017-11-27 1 views
1

내가 비약을 배우려고 노력하고있어에서 중간 항목을 찾을 수 있습니다. 내가 앓은 다른 대부분의 언어에서 이것은 쉬운 일이 될 것입니다.비약 : 목록

그러나 필자는 목록에서 중간 항목을 찾는 데 필요한 Elixir의 색인을 사용하여 목록 항목에 액세스하는 방법을 알아낼 수 없습니다. 모든 설명이 크게 감사하겠습니다!

+1

귀하의 목록에 튜플이 아닌 목록입니다. – Neil

+2

은 내가 비약에하고 싶었던 무엇의 개념을 표시 만했다 –

+0

파이썬 부분은 중요하지 않다 등'list','set', 변수의 이름을 지정하지 마십시오. –

답변

4

당신은 Enum.at/3 보길 원하는 것입니다.

a = [1,2,3,4,5] 
middle_index = a |> length() |> div(2) 
Enum.at(a, middle_index) 

참고 :이리스트의 길이를 찾을 전체 목록을 통과하고 실제 요소가 무엇인지 찾기 위해 목록을 반쯤 통과 할 필요로이 비싸다. 일반적으로 목록의 항목에 임의 액세스가 필요한 경우 다른 데이터 구조를 찾아야합니다.

+0

답장을 보내 주셔서 감사합니다. 지금, 나는 그 목록의 중간 값을 찾기 전에 '범위'를 목록으로 변환하고 있습니다. 그러나 주목했듯이, 그 목록은 정말 비싸요. 이 작업을 수행하는보다 효율적인 방법이 있습니까? –

+0

정확하게이 문제를 해결하려고합니까? 사용자 지정이 너무 작/너무 큰 입력만을 기반으로하는 범위 사이의 어떤 수의 사용자를 생각 추측 : –

+0

나는 "프로그래밍 비약 1.3"에서 excercises 중 하나를 해결하기 위해 노력하고있어. 우리가 지금 질문의 범위를 벗어나는 것처럼 느껴집니다. –

3

이것은 내가 어떻게 할 것입니다 :

Enum.at(x, div(length(x), 2))

Enum.at/3는 열거의 특정 인덱스의 값을 검색합니다. div/2은 Python 2.x / 정수 구분과 동일합니다.

+0

이것이 내가 찾고 있었던 것입니다. 고마워요. 내가 어떻게 Enum.at/3을 놓쳤는 지 잘 모르겠다. –