Python Forum
How can I do it easier ? - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: How can I do it easier ? (/thread-4203.html)



How can I do it easier ? - Mike Ru - Jul-29-2017

I have a list. I need to change my list so that the first ten elems is becoming with a capital letter. I'm doing it this way:
numbers = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thriteen', 'fourteen', 'fivteen']
first_ten = numbers[:10]

capitalize_first_ten =
for x in first_ten:
    capitalize_first_ten.append(x.capitalize())

tmp = list_[10:]
print(list_)
print(capitalize_first_ten + tmp)
I'm sure there are a better way than mine. How would you make it ?


RE: How can I do it easier ? - ichabod801 - Jul-29-2017

capitalized = [word.capitalize() for word in numbers]



RE: How can I do it easier ? - Mike Ru - Jul-29-2017

I reduced the code.
numbers = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thriteen', 'fourteen', 'fivteen']
tmp = [x.capitalize() for x numbers[:10]]
numbers = tmp + numbers[:10]
print(numbers)



RE: How can I do it easier ? - snippsat - Jul-29-2017

numbers = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thriteen', 'fourteen', 'fivteen']
>>> print([x.capitalize() for x in numbers[:10] * 2])
['One', 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight', 'Nine', 'Ten', 'One', 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight', 'Nine', 'Ten']
Or it's okay that way if want 1 capitalize with and 1 with lower case.


RE: How can I do it easier ? - DeaD_EyE - Jul-29-2017

Example with islice and chain from itertools:

from itertools import islice
from itertools import chain

new_list = list(chain((x.capitalize() for x in islice(numbers, 0, 10)), islice(numbers, 10)))



RE: How can I do it easier ? - wavic - Jul-31-2017

capitalized = [word.capitalize() if numbers.index(word) < 10 else word for word in numbers]


RE: How can I do it easier ? - buran - Jul-31-2017

(Jul-31-2017, 02:12 PM)wavic Wrote: capitalized = [word.capitalize() if numbers.index(word) < 10 else word for word in numbers]
I think it's better like this
capitalized = [word.capitalize() if i < 10 else word for i, word in enumerate(numbers)]



RE: How can I do it easier ? - wavic - Jul-31-2017

(Jul-31-2017, 03:45 PM)buran Wrote:
(Jul-31-2017, 02:12 PM)wavic Wrote: capitalized = [word.capitalize() if numbers.index(word) < 10 else word for word in numbers]
I think it's better like this
capitalized = [word.capitalize() if i < 10 else word for i, word in enumerate(numbers)]
 

I was lazy