Julia Language
이해력
수색…
배열 이해
기본 구문
Julia의 배열 내포는 다음 구문을 사용합니다.
[expression for element = iterable]
for
루프 와 마찬가지로 =
, in
및 ∈
모두가 이해를 위해 허용됩니다.
이것은 빈 배열을 만들고 for
루프를 사용하여 push!
것과 대략 같습니다 push!
그것에 항목을.
result = []
for element in iterable
push!(result, expression)
end
그러나 배열 이해의 유형은 가능한 좁아서 성능면에서 더 좋습니다.
예를 들어, 1
에서 10
까지의 정수의 제곱의 배열을 얻으려면 다음 코드를 사용할 수 있습니다.
squares = [x^2 for x=1:10]
이것은 더 이상를위한 깨끗하고 간결한 대체 for
-loop 버전.
squares = []
for x in 1:10
push!(squares, x^2)
end
조건부 배열 이해
Julia 0.5 이전에는 배열 내재 조건을 사용할 수 없었습니다. 그러나 더 이상 사실이 아닙니다. Julia 0.5에서는 다음과 같은 조건을 사용할 수 있습니다.
julia> [x^2 for x in 0:9 if x > 5]
4-element Array{Int64,1}:
36
49
64
81
중첩 목록 이해를 사용하려면 다음을 수행하십시오.
julia>[(x,y) for x=1:5 , y=3:6 if y>4 && x>3 ]
4-element Array{Tuple{Int64,Int64},1}:
(4,5)
(5,5)
(4,6)
(5,6)
다차원 배열 내포
중첩 된 for
루프는 여러 고유 한 iterable을 반복하는 데 사용될 수 있습니다.
result = []
for a = iterable_a
for b = iterable_b
push!(result, expression)
end
end
유사하게, 다중 반복 사양은 어레이 내포물에 제공 될 수있다.
[expression for a = iterable_a, b = iterable_b]
예를 들어, 다음은 1:3
및 1:2
의 데카르트 곱을 생성하는데 사용될 수있다.
julia> [(x, y) for x = 1:3, y = 1:2]
3×2 Array{Tuple{Int64,Int64},2}:
(1,1) (1,2)
(2,1) (2,2)
(3,1) (3,2)
전개 된 다차원 배열 내포는 모양을 잃어 버리는 것을 제외하면 비슷합니다. 예를 들어,
julia> [(x, y) for x = 1:3 for y = 1:2]
6-element Array{Tuple{Int64,Int64},1}:
(1, 1)
(1, 2)
(2, 1)
(2, 2)
(3, 1)
(3, 2)
위의 평탄화 된 변형입니다. 구문상의 차이점은 쉼표 대신에 for
가 추가 for
사용된다는 것입니다.
발전기 내역
생성기 내포는 배열 내포와 비슷한 형식을 따르지만 대괄호 []
대신 괄호 ()
사용합니다.
(expression for element = iterable)
이러한 표현식은 Generator
객체를 반환합니다.
julia> (x^2 for x = 1:5)
Base.Generator{UnitRange{Int64},##1#2}(#1,1:5)
함수 인수
생성기 내포는 함수에 대한 유일한 인수로 제공 될 수 있으며 추가 괄호 세트가 필요하지 않습니다.
julia> join(x^2 for x = 1:5)
"1491625"
그러나 인수가 두 개 이상 제공되면 생성자는 자체 괄호 세트를 요구합니다.
julia> join(x^2 for x = 1:5, ", ")
ERROR: syntax: invalid iteration specification
julia> join((x^2 for x = 1:5), ", ")
"1, 4, 9, 16, 25"