slicing copyright © software carpentry 2010 this work is licensed under the creative commons...
TRANSCRIPT
![Page 1: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/1.jpg)
Slicing
Copyright © Software Carpentry 2010
This work is licensed under the Creative Commons Attribution License
See http://software-carpentry.org/license.html for more information.
Python
![Page 2: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/2.jpg)
Python Slicing
Lists, strings, and tuples are all sequences
![Page 3: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/3.jpg)
Python Slicing
Lists, strings, and tuples are all sequences
Can be indexed by integers in the range 0…len(X)-1
![Page 4: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/4.jpg)
Python Slicing
Lists, strings, and tuples are all sequences
Can be indexed by integers in the range 0…len(X)-1
Can also be sliced using a range of indices
![Page 5: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/5.jpg)
Python Slicing
Lists, strings, and tuples are all sequences
Can be indexed by integers in the range 0…len(X)-1
Can also be sliced using a range of indices>>> element = 'uranium'>>>
u r a n i u m
0 1 2 3 4 5 6 7
-7
-6
-5
-4
-3
-2
-1
![Page 6: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/6.jpg)
Python Slicing
Lists, strings, and tuples are all sequences
Can be indexed by integers in the range 0…len(X)-1
Can also be sliced using a range of indices>>> element = 'uranium'>>> print element[1:4]ran>>>
u r a n i u m
0 1 2 3 4 5 6 7
-7
-6
-5
-4
-3
-2
-1
![Page 7: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/7.jpg)
Python Slicing
Lists, strings, and tuples are all sequences
Can be indexed by integers in the range 0…len(X)-1
Can also be sliced using a range of indices>>> element = 'uranium'>>> print element[1:4]ran>>> print element[:4]uran>>>
u r a n i u m
0 1 2 3 4 5 6 7
-7
-6
-5
-4
-3
-2
-1
![Page 8: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/8.jpg)
Python Slicing
Lists, strings, and tuples are all sequences
Can be indexed by integers in the range 0…len(X)-1
Can also be sliced using a range of indices>>> element = 'uranium'>>> print element[1:4]ran>>> print element[:4]uran>>> print element[4:]ium>>>
u r a n i u m
0 1 2 3 4 5 6 7
-7
-6
-5
-4
-3
-2
-1
![Page 9: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/9.jpg)
Python Slicing
Lists, strings, and tuples are all sequences
Can be indexed by integers in the range 0…len(X)-1
Can also be sliced using a range of indices>>> element = 'uranium'>>> print element[1:4]ran>>> print element[:4]uran>>> print element[4:]ium>>> print element[-4:]nium>>>
u r a n i u m
0 1 2 3 4 5 6 7
-7
-6
-5
-4
-3
-2
-1
![Page 10: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/10.jpg)
Python Slicing
Python checks bounds when indexing
![Page 11: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/11.jpg)
Python Slicing
Python checks bounds when indexing
But truncates when slicing
![Page 12: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/12.jpg)
Python Slicing
Python checks bounds when indexing
But truncates when slicing>>> element = 'uranium'>>>
u r a n i u m
0 1 2 3 4 5 6 7
-7
-6
-5
-4
-3
-2
-1
![Page 13: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/13.jpg)
Python Slicing
Python checks bounds when indexing
But truncates when slicing>>> element = 'uranium'>>> print element[400]IndexError: string index out of range>>>
u r a n i u m
0 1 2 3 4 5 6 7
-7
-6
-5
-4
-3
-2
-1
![Page 14: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/14.jpg)
Python Slicing
Python checks bounds when indexing
But truncates when slicing>>> element = 'uranium'>>> print element[400]IndexError: string index out of range>>> print element[1:400]ranium>>>
u r a n i u m
0 1 2 3 4 5 6 7
-7
-6
-5
-4
-3
-2
-1
![Page 15: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/15.jpg)
Python Slicing
Python checks bounds when indexing
But truncates when slicing>>> element = 'uranium'>>> print element[400]IndexError: string index out of range>>> print element[1:400]ranium>>>
u r a n i u m
0 1 2 3 4 5 6 7
-7
-6
-5
-4
-3
-2
-1
"A foolish consistency is
the hobgoblin of little minds."
— Ralph Waldo Emerson
![Page 16: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/16.jpg)
Python Slicing
Python checks bounds when indexing
But truncates when slicing>>> element = 'uranium'>>> print element[400]IndexError: string index out of range>>> print element[1:400]ranium>>>
u r a n i u m
0 1 2 3 4 5 6 7
-7
-6
-5
-4
-3
-2
-1
"A foolish consistency is
the hobgoblin of little minds."
— Ralph Waldo Emerson
"Aw, you're kidding me!"
— programmers
![Page 17: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/17.jpg)
Python Slicing
So text[1:3] is 0, 1, or 2 characters long
![Page 18: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/18.jpg)
Python Slicing
So text[1:3] is 0, 1, or 2 characters long
'' ''
'a' ''
'ab' 'b'
'abc' 'bc'
'abcdef' 'bc'
![Page 19: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/19.jpg)
Python Slicing
For consistency, text[1:1] is the empty string
![Page 20: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/20.jpg)
Python Slicing
For consistency, text[1:1] is the empty string
– From index 1 up to (but not including) index 1
![Page 21: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/21.jpg)
Python Slicing
For consistency, text[1:1] is the empty string
– From index 1 up to (but not including) index 1
And text[3:1] is always the empty string
![Page 22: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/22.jpg)
Python Slicing
For consistency, text[1:1] is the empty string
– From index 1 up to (but not including) index 1
And text[3:1] is always the empty string
– Not the reverse of text[1:3]
![Page 23: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/23.jpg)
Python Slicing
For consistency, text[1:1] is the empty string
– From index 1 up to (but not including) index 1
And text[3:1] is always the empty string
– Not the reverse of text[1:3]
But text[1:-1] is everything except the first and
last characters
![Page 24: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/24.jpg)
Python Slicing
Slicing always creates a new collection
![Page 25: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/25.jpg)
Python Slicing
Slicing always creates a new collection
Beware of aliasing
![Page 26: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/26.jpg)
Python Slicing
Slicing always creates a new collection
Beware of aliasing
>>> points = [[10, 10], [20, 20], [30, 30], [40, 40]]>>>
![Page 27: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/27.jpg)
Python Slicing
Slicing always creates a new collection
Beware of aliasing
>>> points = [[10, 10], [20, 20], [30, 30], [40, 40]]>>> middle = points[1:-1]>>>
![Page 28: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/28.jpg)
Python Slicing
Slicing always creates a new collection
Beware of aliasing
>>> points = [[10, 10], [20, 20], [30, 30], [40, 40]]>>> middle = points[1:-1]>>> middle[0][0] = 'whoops'>>>
![Page 29: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/29.jpg)
Python Slicing
Slicing always creates a new collection
Beware of aliasing
>>> points = [[10, 10], [20, 20], [30, 30], [40, 40]]>>> middle = points[1:-1]>>> middle[0][0] = 'whoops'>>> middle[1][0] = 'aliasing'>>>
![Page 30: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/30.jpg)
Python Slicing
Slicing always creates a new collection
Beware of aliasing
>>> points = [[10, 10], [20, 20], [30, 30], [40, 40]]>>> middle = points[1:-1]>>> middle[0][0] = 'whoops'>>> middle[1][0] = 'aliasing'>>> print middle[['whoops', 20], ['aliasing', 30]]>>>
![Page 31: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/31.jpg)
Python Slicing
Slicing always creates a new collection
Beware of aliasing
>>> points = [[10, 10], [20, 20], [30, 30], [40, 40]]>>> middle = points[1:-1]>>> middle[0][0] = 'whoops'>>> middle[1][0] = 'aliasing'>>> print middle[['whoops', 20], ['aliasing', 30]]>>> print points[[10, 10], ['whoops', 20], ['aliasing', 30], [40, 40]]>>>
![Page 32: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/32.jpg)
Python Slicing
10
10
20
20
30
30
40
40
points
![Page 33: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/33.jpg)
Python Slicing
10
10
20
20
30
30
40
40
points
middle
![Page 34: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/34.jpg)
Python Slicing
10
10
20
30
30
40
40
points
middle
'whoops'
![Page 35: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/35.jpg)
Python Slicing
10
10
20
30
40
40
points
middle
'whoops'
'aliasing'
![Page 36: Slicing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader036.vdocument.in/reader036/viewer/2022062712/56649c855503460f9493af98/html5/thumbnails/36.jpg)
October 2010
created by
Greg Wilson
Copyright © Software Carpentry 2010
This work is licensed under the Creative Commons Attribution License
See http://software-carpentry.org/license.html for more information.