# How to Compose a Array Comprehension embedding a Condition Test?

**URL:** <https://discourse.julialang.org/t/how-to-compose-a-array-comprehension-embedding-a-condition-test/51497>\
**Category:** General Usage\
**Tags:** question\
**Created:** [December 9, 2020, 5:18am UTC](https://discourse.julialang.org/t/how-to-compose-a-array-comprehension-embedding-a-condition-test/51497 "2020-12-09T05:18:03Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![KyleJT](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kylejt/32/8929_2.png) [@KyleJT](https://discourse.julialang.org/u/KyleJT)\
**Post date:** [December 9, 2020, 5:18am UTC](https://discourse.julialang.org/t/how-to-compose-a-array-comprehension-embedding-a-condition-test/51497/1 "2020-12-09T05:18:03Z")

</div>

I have a code as the following:

```julia
list = []
for itr in "Watch out! Hello, world"
    if isletter(itr)
        append!(list,itr)
    end
end
println(list)

```

How can I convert the above code snippet into an array comprehension? Something like:

```julia
[isletter(itr) ? itr : $(give it up) for itr in str]

```

---

<div class="post-metadata">

**Author:** ![greg\_plowman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/greg_plowman/32/8100_2.png) [@greg\_plowman](https://discourse.julialang.org/u/greg_plowman)\
**Post date:** [December 9, 2020, 6:16am UTC](https://discourse.julialang.org/t/how-to-compose-a-array-comprehension-embedding-a-condition-test/51497/2 "2020-12-09T06:16:44Z")

</div>

Maybe you can use a generator expression with the `if` keyword:  
([Multi-dimensional Arrays · The Julia Language](https://docs.julialang.org/en/v1/manual/arrays/#Generator-Expressions))

```julia
str = "Watch out! Hello, world"
[c for c in str if isletter(c)]

```

---

<div class="post-metadata">

**Author:** ![KyleJT](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kylejt/32/8929_2.png) [@KyleJT](https://discourse.julialang.org/u/KyleJT)\
**Post date:** [December 9, 2020, 7:27am UTC](https://discourse.julialang.org/t/how-to-compose-a-array-comprehension-embedding-a-condition-test/51497/3 "2020-12-09T07:27:43Z")

</div>

Thanks, your solution works. Inspired by your work, I found another tech:

```julia
filter(isletter, str)

```

---

<div class="post-metadata">

**Author:** ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)\
**Post date:** [December 9, 2020, 7:30am UTC](https://discourse.julialang.org/t/how-to-compose-a-array-comprehension-embedding-a-condition-test/51497/4 "2020-12-09T07:30:23Z")

</div>

> [@KyleJT](#):
>
> `list = []`

Be aware that this is a bad idea. It will force your output array to have eltype `Any`. In order to initialize an empty vector of characters write:

```julia
list = Char[]

```

Initializing arrays with a plain `[]` is a serious performance trap.

---

<div class="post-metadata">

**Author:** ![KyleJT](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kylejt/32/8929_2.png) [@KyleJT](https://discourse.julialang.org/u/KyleJT)\
**Post date:** [December 9, 2020, 7:32am UTC](https://discourse.julialang.org/t/how-to-compose-a-array-comprehension-embedding-a-condition-test/51497/5 "2020-12-09T07:32:49Z")

</div>

Get it! Thanks for your explanations.
