Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does [:-1] mean/do in python? [duplicate]

Tags:

python

Working on a python assignment and was curious as to what [:-1] means in the context of the following code: instructions = f.readline()[:-1]

Have searched on here on S.O. and on Google but to no avail. Would love an explanation!

like image 596
Matt. Avatar asked Mar 20 '13 21:03

Matt.


4 Answers

It slices the string to omit the last character, in this case a newline character:

>>> 'test\n'[:-1]
'test'

Since this works even on empty strings, it's a pretty safe way of removing that last character, if present:

>>> ''[:-1]
''

This works on any sequence, not just strings.

For lines in a text file, I’d actually use line.rstrip('\n') to only remove a newline; sometimes the last line in the file doesn’t end in a newline character and using slicing then removes whatever other character is last on that line.

like image 133
Martijn Pieters Avatar answered Oct 31 '22 05:10

Martijn Pieters


It means "all elements of the sequence but the last". In the context of f.readline()[:-1] it means "I'm pretty sure that line ends with a newline and I want to strip it".

like image 32
Pavel Anossov Avatar answered Oct 31 '22 05:10

Pavel Anossov


It selects all but the last element of a sequence.

Example below using a list:

In [15]: a=range(10)

In [16]: a
Out[16]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

In [17]: a[:-1]
Out[17]: [0, 1, 2, 3, 4, 5, 6, 7, 8]
like image 15
Fredrik Pihl Avatar answered Oct 31 '22 06:10

Fredrik Pihl


It gets all the elements from the list (or characters from a string) but the last element.

: represents going through the list -1 implies the last element of the list

like image 3
Kartik Avatar answered Oct 31 '22 05:10

Kartik