Hi guys,

Thanks for the both answers. It clarifies the topic.

Best Regards,
Jan

Dňa streda, 3. februára 2016 3:35:47 UTC+1 Cedric St-Jean napísal(-a):
>
> If you're looking for a one-liner, this works:
>
> for i in 1:10 tmp[1:i,i] = rand(i) end
>
> It looks gross at first, but eventually the brain parses it just fine. 
> `end` is just a very verbose closing parenthesis.
>
> On Tuesday, February 2, 2016 at 10:17:56 AM UTC-5, Stefan Karpinski wrote:
>>
>> As you suspect, assignment inside of comprehensions is and antipattern. 
>> It *will* allocate the result array of arrays and then throw it away. 
>> This could potentially be optimized away, but why not just use a for loop?
>>
>> On Tue, Feb 2, 2016 at 4:00 AM, Ján Dolinský <[email protected]> 
>> wrote:
>>
>>> Hi,
>>>
>>> Is an assigment inside a comprehension a "good practice" e.g. I want to 
>>> fill in columns of a temporary matrix as follows:
>>>
>>> tmp = zeros(10,10)
>>>
>>> # this is flawless
>>> for i in 1:10
>>>  tmp[1:i,i] = rand(i)
>>> end
>>>
>>> # this is a neat one line expression but I wonder whether it does not 
>>> silently allocate result outside of the comprehension
>>> [ tmp[1:i,i] = rand(i) for i in 1:10 ]
>>> # e.g. here "x" becomes a vector of vectors ...
>>> x = [ tmp[1:i,i] = rand(i) for i in 1:10 ]
>>>
>>> Thanks for an advice,
>>> Jan
>>>  
>>>
>>
>>

Reply via email to