[[1,2,3], [4,5,6]] 행 목록으로 주어진 행렬을 가지고 있다면, 첫 번째 열 [1,4]. 나는 Haskell에서 절대 초보자이며 중첩 목록을 다루는 방법조차 모른다.Haskell의 행 목록으로 주어진 행렬의 첫 번째 열
3
A
답변
6
다음 코드는 일을 할 것입니다 :
map head [[1,2,3],[4,5,6]]
map
는 하스켈에서 가장 유용한 기능 (및 다른 기능 프로그래밍 언어) 중 하나입니다. 목록이 [a,b,c,d]
이고 함수가 f
이면 map f [a,b,c,d]
은 [f a, f b, f c, f d]
을 반환합니다. head
함수는 목록의 첫 번째 요소를 추출합니다.
col :: Int -> [[a]] -> [a]
col n = map (head . drop n)
N보다 크거나 당신이 그것을 줄 목록의 길이와 동일한 경우이 실패합니다 유의 사항 : 일반적으로
map head [[1,2,3],[4,5,6]] ->
[head [1,2,3], head [4,5,6]] ->
[1,4]
6
더는 이유입니다.
1
다음 코드는 일을 할 것입니다 : 조나스 '답변을 확장하려면
map head [[1,2,3],[4,5,6]]
; map
은 목록의 각 요소에 함수를 적용합니다. 함수를 목록에 "맵핑"한 결과는 다른 유형의 새 목록입니다.
여기에 입력 된 목록의 유형은 [[Int]]
입니다. 즉, 목록의 각 요소는 Int
의 목록입니다. 따라서 각 하위 목록을 가져 와서 첫 번째 요소를 반환하는 함수가 필요합니다. 즉, head
입니다.
map
는 기능
head
을 각 목록의 단지 선두 (최초의 요소)를 포함하는 유형
[Int]
의 새 목록을 얻을 수 있도록 하위 목록의 각각에 적용됩니다, 요약합니다.
2
행렬을 행렬로 변환하는 라이브러리 함수는 Data.List.transpose
입니다. 그래서 문제를 해결하는 하나의 방법이다
import Data.List (transpose)
col = head . transpose
또한 행렬에서 모든 열을 얻을 수있는 기능을 쓸 수
:
colN n matrix = transpose matrix !! n
면책 조항 :
가 전치 당신이 필요로하는 경우 비용이 기억을 전체 행렬을 조 변경합니다. 첫 번째 열에 대해서는 사람들이 제시 한 다른 솔루션과 거의 동일한 비용이어야합니다.
또한 결과는 인수와 동일한 유형 인 [[a]] -> [[a]]
이기 때문에 코드 변환이 비교적 위험합니다. 따라서 잘못된 수의 전치를 던지기 쉽습니다. (나는 이것을 어려운 방법으로 배웠다.)
관련 문제
- 1. LaTeX에서 행렬의 행 및 열 레이블 지정
- 2. 루비 행렬의 열 또는 행 교환하기
- 3. 행렬의 모든 행 바꾸기
- 4. PickerView 첫 번째 행 선택
- 5. 첫 번째 열의 요소 속성을 기반으로 행렬의 일부를 추출합니다.
- 6. 루프를 사용하지 않고 행렬의 행 자르기
- 7. 주어진 @comments - 첫 번째 레코드를 제외하는 방법
- 8. 주어진 디렉토리에서 지정된 유형의 첫 번째 파일
- 9. 행렬의 인덱스 된 요소에 해당 행 및 열 번호 찾기
- 10. WPF Datagrid의 첫 번째 행 스타일
- 11. vs2003 : DataRow []의 첫 번째 행 식별
- 12. 다른 행과 다른 UITableview의 첫 번째 행
- 13. RDLC 테이블의 첫 번째 행 찾기
- 14. 여러 테이블에서 첫 번째 행 선택
- 15. 플로팅 요소의 첫 번째 행 너비?
- 16. GTK # TreeView 첫 번째 행 색깔
- 17. Datagridview - 첫 번째 열 앞에 부분을 제거하십시오.
- 18. EF 코드 첫 번째 읽기 전용 열
- 19. 데이터 테이블의 첫 번째 열 값
- 20. .bat 사용 - 첫 번째 .csv의 특정 첫 번째 열 데이터에서 두 번째 .csv 만들기
- 21. 두 번째 열이 첫 번째 열 아래로 들어가는 이유는 무엇입니까?
- 22. WCF RIA - 많은 하나는, 단지 첫 번째 행
- 23. 하드 코딩 된 열 값 목록에서 첫 번째 행 찾기 (피벗 문제?)
- 24. CATransform3D 행/열 순서
- 25. 첫 번째
- 26. Numpy 최소 (행, 열) 형식
- 27. jQuery - 주어진 행의 첫 번째 셀을 선택 하시겠습니까?
- 28. 주어진 날짜 이후 첫 번째 월요일의 날짜 찾기
- 29. 주어진 개체 뒤에 오는 첫 번째 개체의 선택자
- 30. 첫 번째 항목으로 그룹화
동등하게,'col n = map (!! n)'은 의도를 조금 더 분명하게 전달한다고 생각한다. YMMV. – ephemient