Compact Python for() Loop

python

Solution

You need to use the `ternary operator` here:

[prefix + i if i.startswith('c') else i for i in my_list]

Note that this doesn't changes the original `my_list`, it simply returns a new list.

You can simply asssign the list comprehension back to `my_list` to achieve that:

my_list=[prefix + i if i.startswith('c') else i for i in my_list]

PS: Don't use `list` as a variable name

Problem

How do I rearrange the following code into a simplified list comprehension? ``` for i in xrange(len(list)): if list[i].startswith('c'): list[i] = prefix + list[i] ``` I tried the following but it did not seem to work: ``` [prefix + list[i] for i in xrange(len(list)) if list[i].startswith('c')] ``` The following throws me off: ``` list[i] = prefix + list[i] ```

Original source