튜플 목록이 있는데 튜플의 특정 위치에서 요소 목록을 만들고 싶습니다.튜플 목록을 분할하여 목록을 생성하는 방법
내 튜플은 {A, B}이고 이들 중 몇 개는 목록에 있으며 모든 B 요소의 목록을 만들고 싶습니다.
건배!
튜플 목록이 있는데 튜플의 특정 위치에서 요소 목록을 만들고 싶습니다.튜플 목록을 분할하여 목록을 생성하는 방법
내 튜플은 {A, B}이고 이들 중 몇 개는 목록에 있으며 모든 B 요소의 목록을 만들고 싶습니다.
건배!
이것은 테스트하지 않은 빠른 샘플이지만 작동해야합니다.
split_tuples([{A | B} | T], Acc) ->
NewAcc = [B | Acc],
split_tuples(T, NewAcc);
split_tuples([], Acc) ->
lists:reverse(Acc).
lists : map을 사용할 수 있습니다. 지도에 전달
1> A = [{1,2},{3,4},{5,6}].
[{1,2},{3,4},{5,6}]
2> B = lists:map(fun ({_, V}) -> V end, A).
[2,4,6]
함수 튜플에서 필요한 요소를 선택할 것이고, 그 결과는 튜플들의 주어진리스트의 특정 위치에서 모든 요소들의리스트 것이다. 위의 코드는 모든 튜플의 요소 수가 같다고 가정합니다.
건배! Works beutifuly – user2270439
> L = [{a1,b1}, {a2,b2}, {a3,b3}].
[{a1,b1},{a2,b2},{a3,b3}]
> lists:foldr(fun({_, B}, Acc) -> [B | Acc] end, [], L).
[b1,b2,b3]
erlang의 element/2
함수는 튜플에서 n 번째 요소를 반환합니다.
위치를 매개 변수로 사용하여지도 또는 접기 기능에 넣으면 완료됩니다.
편집 : 일부 검증되지 않은 코드 예제 :
이get_them_all(ListOfTuples,Index) ->
lists:map(fun(Tuple) -> element(Index,Tuple) end,ListOfTuples).
또 다른 방법은 단순한리스트 통합 사용하는 것입니다의
[B || {_, B} <- L].
당신이이 솔루션 :리스트에 다른 2 요소가있는 튜플을 포함한다면, 자동으로 건너 뛸 것입니다. 예 :'[b1, b2] = [B || {_, B} <- [{a1, b1}, {a2, b2}, {a3, b3, c3}]]. 어떤 경우에는 그렇지 않은 것이 바람직하다. – danechkin
중복 가능성을 [I가 어떻게 구축 할 Erlang에서 튜플 목록에서 추출한 요소 목록?] (http://stackoverflow.com/questions/23626189/how-do-i-build-a-list-of-elements-extracted-from-a-list- of-tuples-in-erlang) – aronisstav