SlideShare une entreprise Scribd logo
1  sur  36
Télécharger pour lire hors ligne
Python 
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.
Lists, strings, and tuples are all sequences 
Python Slicing
Lists, strings, and tuples are all sequences 
Can be indexed by integers in the range 0…len(X)-1 
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 aa rraannggee ooff iinnddiicceess 
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 aa rraannggee ooff iinnddiicceess 
>>>>>>>>>>>> element = 'uranium' 
>>>>>>>>>>>> 
0 1 2 3 4 5 6 7 
u r a n i u m 
-7 -6 -5 -4 -3 -2 -1 
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 aa rraannggee ooff iinnddiicceess 
>>>>>>>>>>>> element = 'uranium' 
>>>>>>>>>>>> print element[1:4] 
ran 
>>>>>>>>>>>> 
0 1 2 3 4 5 6 7 
u r a n i u m 
-7 -6 -5 -4 -3 -2 -1 
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 aa rraannggee ooff iinnddiicceess 
>>>>>>>>>>>> element = 'uranium' 
>>>>>>>>>>>> print element[1:4] 
ran 
>>>>>>>>>>>> print element[:4] 
uran 
>>>>>>>>>>>> 
0 1 2 3 4 5 6 7 
u r a n i u m 
-7 -6 -5 -4 -3 -2 -1 
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 aa rraannggee ooff iinnddiicceess 
>>>>>>>>>>>> element = 'uranium' 
>>>>>>>>>>>> print element[1:4] 
ran 
>>>>>>>>>>>> print element[:4] 
uran 
>>>>>>>>>>>> print element[4:] 
0 1 2 3 4 5 6 7 
u r a n i u m 
-7 -6 -5 -4 -3 -2 -1 
ium 
>>>>>>>>>>>> 
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 aa rraannggee ooff iinnddiicceess 
>>>>>>>>>>>> element = 'uranium' 
>>>>>>>>>>>> print element[1:4] 
ran 
>>>>>>>>>>>> print element[:4] 
uran 
>>>>>>>>>>>> print element[4:] 
0 1 2 3 4 5 6 7 
u r a n i u m 
-7 -6 -5 -4 -3 -2 -1 
ium 
>>>>>>>>>>>> print element[-4:] 
nium 
>>>>>>>>>>>> 
Python Slicing
Python checks bounds when indexing 
Python Slicing
Python checks bounds when indexing 
But truncates when slicing 
Python Slicing
Python checks bounds when indexing 
But truncates when slicing 
>>>>>>>>>>>>>>>>>>>>>>>> eelleemmeenntt == ''uurraanniiuumm'' 
>>>>>>>>>>>> 
0 1 2 3 4 5 6 7 
u r a n i u m 
-7 -6 -5 -4 -3 -2 -1 
Python Slicing
Python checks bounds when indexing 
But truncates when slicing 
>>>>>>>>>>>>>>>>>>>>>>>> eelleemmeenntt == ''uurraanniiuumm'' 
>>>>>>>>>>>> print element[400] 
IIIInnnnddddeeeexxxxEEEErrrrrrrroooorrrr:::: ssssttttrrrriiiinnnngggg iiiinnnnddddeeeexxxx oooouuuutttt ooooffff rrrraaaannnnggggeeee 
>>>>>>>>>>>> 
0 1 2 3 4 5 6 7 
u r a n i u m 
-7 -6 -5 -4 -3 -2 -1 
Python Slicing
Python checks bounds when indexing 
But truncates when slicing 
>>>>>>>>>>>>>>>>>>>>>>>> eelleemmeenntt == ''uurraanniiuumm'' 
>>>>>>>>>>>> print element[400] 
IIIInnnnddddeeeexxxxEEEErrrrrrrroooorrrr:::: ssssttttrrrriiiinnnngggg iiiinnnnddddeeeexxxx oooouuuutttt ooooffff rrrraaaannnnggggeeee 
>>>>>>>>>>>> print element[1:400] 
ranium 
>>>>>>>>>>>> 
0 1 2 3 4 5 6 7 
u r a n i u m 
-7 -6 -5 -4 -3 -2 -1 
Python Slicing
Python checks bounds when indexing 
But truncates when slicing 
>>>>>>>>>>>>>>>>>>>>>>>> eelleemmeenntt == ''uurraanniiuumm'' 
>>>>>>>>>>>> print element[400] 
IIIInnnnddddeeeexxxxEEEErrrrrrrroooorrrr:::: ssssttttrrrriiiinnnngggg iiiinnnnddddeeeexxxx oooouuuutttt ooooffff rrrraaaannnnggggeeee 
>>>>>>>>>>>> print element[1:400] 
ranium 
>>>>>>>>>>>> 
0 1 2 3 4 5 6 7 
u r a n i u m 
-7 -6 -5 -4 -3 -2 -1 
"A foolish consistency is 
the hobgoblin of little minds." 
— Ralph Waldo Emerson 
Python Slicing
Python checks bounds when indexing 
But truncates when slicing 
>>>>>>>>>>>>>>>>>>>>>>>> eelleemmeenntt == ''uurraanniiuumm'' 
>>>>>>>>>>>> print element[400] 
IIIInnnnddddeeeexxxxEEEErrrrrrrroooorrrr:::: ssssttttrrrriiiinnnngggg iiiinnnnddddeeeexxxx oooouuuutttt ooooffff rrrraaaannnnggggeeee 
>>>>>>>>>>>> print element[1:400] 
ranium 
>>>>>>>>>>>> 
0 1 2 3 4 5 6 7 
u r a n i u m 
-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 
Python Slicing
So text[1:3] is 0, 1, or 2 characters long 
Python Slicing
So text[1:3] is 0, 1, or 2 characters long 
'' '' 
''aa'' '''' 
'ab' 'b' 
'abc' 'bc' 
'abcdef' 'bc' 
Python Slicing
For consistency, text[1:1] is the empty string 
Python Slicing
For consistency, text[1:1] is the empty string 
– From index 1 up to (but not including) index 1 
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 tthhee eemmppttyy ssttrriinngg 
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 tthhee eemmppttyy ssttrriinngg 
– Not the reverse of text[1:3] 
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 tthhee eemmppttyy ssttrriinngg 
– Not the reverse of text[1:3] 
But text[1:-1] is everything except the first and 
last characters 
Python Slicing
Slicing always creates a new collection 
Python Slicing
Slicing always creates a new collection 
Beware of aliasing 
Python Slicing
Slicing always creates a new collection 
Beware of aliasing 
>>>>>>>>>>>>>>>>>>>>>>>> ppooiinnttss == [[[[1100,, 1100]],, [[2200,, 2200]],, [[3300,, 3300]],, [[4400,, 4400]]]] 
>>>>>>>>>>>> 
Python Slicing
Slicing always creates a new collection 
Beware of aliasing 
>>>>>>>>>>>>>>>>>>>>>>>> ppooiinnttss == [[[[1100,, 1100]],, [[2200,, 2200]],, [[3300,, 3300]],, [[4400,, 4400]]]] 
>>>>>>>>>>>> middle = points[1:-1] 
>>>>>>>>>>>> 
Python Slicing
Slicing always creates a new collection 
Beware of aliasing 
>>>>>>>>>>>>>>>>>>>>>>>> ppooiinnttss == [[[[1100,, 1100]],, [[2200,, 2200]],, [[3300,, 3300]],, [[4400,, 4400]]]] 
>>>>>>>>>>>> middle = points[1:-1] 
>>>>>>>>>>>> middle[0][0] = 'whoops' 
>>>>>>>>>>>> 
Python Slicing
Slicing always creates a new collection 
Beware of aliasing 
>>>>>>>>>>>>>>>>>>>>>>>> ppooiinnttss == [[[[1100,, 1100]],, [[2200,, 2200]],, [[3300,, 3300]],, [[4400,, 4400]]]] 
>>>>>>>>>>>> middle = points[1:-1] 
>>>>>>>>>>>> middle[0][0] = 'whoops' 
>>>>>>>>>>>> middle[1][0] = 'aliasing' 
>>>>>>>>>>>> 
Python Slicing
Slicing always creates a new collection 
Beware of aliasing 
>>>>>>>>>>>>>>>>>>>>>>>> ppooiinnttss == [[[[1100,, 1100]],, [[2200,, 2200]],, [[3300,, 3300]],, [[4400,, 4400]]]] 
>>>>>>>>>>>> middle = points[1:-1] 
>>>>>>>>>>>> middle[0][0] = 'whoops' 
>>>>>>>>>>>> middle[1][0] = 'aliasing' 
>>>>>>>>>>>> print middle 
[['whoops', 20], ['aliasing', 30]] 
>>>>>>>>>>>> 
Python Slicing
Slicing always creates a new collection 
Beware of aliasing 
>>>>>>>>>>>>>>>>>>>>>>>> ppooiinnttss == [[[[1100,, 1100]],, [[2200,, 2200]],, [[3300,, 3300]],, [[4400,, 4400]]]] 
>>>>>>>>>>>> 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]] 
>>>>>>>>>>>> 
Python Slicing
10 
10 
20 
points 
20 
30 
30 
40 
40 
Python Slicing
10 
10 
20 
points 
20 
30 
30 
middle 
40 
40 
Python Slicing
10 
10 
points 
'whoops' 
20 
30 
30 
middle 
40 
40 
Python Slicing
10 
10 
points 
'whoops' 
20 
30 
middle 
'aliasing' 
40 
40 
Python Slicing
created by 
Greg Wilson 
October 2010 
Copyright © Software Carpentry 2010 
This work is licensed under the Creative Commons Attribution License 
See http://software-carpentry.org/license.html for more information.

Contenu connexe

Tendances

Tendances (20)

Python 3 Programming Language
Python 3 Programming LanguagePython 3 Programming Language
Python 3 Programming Language
 
Operators in Python
Operators in PythonOperators in Python
Operators in Python
 
Python Flow Control
Python Flow ControlPython Flow Control
Python Flow Control
 
Fundamentals of Python Programming
Fundamentals of Python ProgrammingFundamentals of Python Programming
Fundamentals of Python Programming
 
Python list
Python listPython list
Python list
 
Data handling CBSE PYTHON CLASS 11
Data handling CBSE PYTHON CLASS 11Data handling CBSE PYTHON CLASS 11
Data handling CBSE PYTHON CLASS 11
 
sorting and its types
sorting and its typessorting and its types
sorting and its types
 
Python dictionary
Python   dictionaryPython   dictionary
Python dictionary
 
Variables & Data Types In Python | Edureka
Variables & Data Types In Python | EdurekaVariables & Data Types In Python | Edureka
Variables & Data Types In Python | Edureka
 
Python
PythonPython
Python
 
String Manipulation in Python
String Manipulation in PythonString Manipulation in Python
String Manipulation in Python
 
Introduction to python
Introduction to pythonIntroduction to python
Introduction to python
 
Stack
StackStack
Stack
 
Conditional and control statement
Conditional and control statementConditional and control statement
Conditional and control statement
 
Python for loop
Python for loopPython for loop
Python for loop
 
Linear search-and-binary-search
Linear search-and-binary-searchLinear search-and-binary-search
Linear search-and-binary-search
 
Data Structures in Python
Data Structures in PythonData Structures in Python
Data Structures in Python
 
Loops in Python
Loops in PythonLoops in Python
Loops in Python
 
Tuples in Python
Tuples in PythonTuples in Python
Tuples in Python
 
Chapter 10 data handling
Chapter 10 data handlingChapter 10 data handling
Chapter 10 data handling
 

En vedette (6)

Tuples
TuplesTuples
Tuples
 
Class 6: Lists & dictionaries
Class 6: Lists & dictionariesClass 6: Lists & dictionaries
Class 6: Lists & dictionaries
 
Python Workshop Part 2. LUG Maniapl
Python Workshop Part 2. LUG ManiaplPython Workshop Part 2. LUG Maniapl
Python Workshop Part 2. LUG Maniapl
 
Dictionaries in Python
Dictionaries in PythonDictionaries in Python
Dictionaries in Python
 
Lists
ListsLists
Lists
 
Programming with Python
Programming with PythonProgramming with Python
Programming with Python
 

Similaire à Slicing

Python 3.3 チラ見
Python 3.3 チラ見Python 3.3 チラ見
Python 3.3 チラ見
Toru Furukawa
 
Python language data types
Python language data typesPython language data types
Python language data types
Harry Potter
 
Python language data types
Python language data typesPython language data types
Python language data types
Young Alista
 

Similaire à Slicing (20)

Libraries
LibrariesLibraries
Libraries
 
Python String Revisited.pptx
Python String Revisited.pptxPython String Revisited.pptx
Python String Revisited.pptx
 
Python course
Python coursePython course
Python course
 
Introduction to Python for Bioinformatics
Introduction to Python for BioinformaticsIntroduction to Python for Bioinformatics
Introduction to Python for Bioinformatics
 
Python 3.3 チラ見
Python 3.3 チラ見Python 3.3 チラ見
Python 3.3 チラ見
 
Basics
BasicsBasics
Basics
 
Python study material
Python study materialPython study material
Python study material
 
Datatypes in python
Datatypes in pythonDatatypes in python
Datatypes in python
 
Python Quick Start
Python Quick StartPython Quick Start
Python Quick Start
 
Python in 90 Minutes
Python in 90 MinutesPython in 90 Minutes
Python in 90 Minutes
 
Python
PythonPython
Python
 
Python
PythonPython
Python
 
Python tutorial
Python tutorialPython tutorial
Python tutorial
 
Python tutorial
Python tutorialPython tutorial
Python tutorial
 
Python Traning presentation
Python Traning presentationPython Traning presentation
Python Traning presentation
 
Python Loop
Python LoopPython Loop
Python Loop
 
Numpy_Cheat_Sheet.pdf
Numpy_Cheat_Sheet.pdfNumpy_Cheat_Sheet.pdf
Numpy_Cheat_Sheet.pdf
 
Python language data types
Python language data typesPython language data types
Python language data types
 
Python language data types
Python language data typesPython language data types
Python language data types
 
Python language data types
Python language data typesPython language data types
Python language data types
 

Plus de Marieswaran Ramasamy (6)

Handouts lecture slides_lecture6_5
Handouts lecture slides_lecture6_5Handouts lecture slides_lecture6_5
Handouts lecture slides_lecture6_5
 
Functions
FunctionsFunctions
Functions
 
Alias
AliasAlias
Alias
 
Strings
StringsStrings
Strings
 
Input and Output
Input and OutputInput and Output
Input and Output
 
Control Flow
Control FlowControl Flow
Control Flow
 

Dernier

Dernier (20)

ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 

Slicing

  • 1. Python 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.
  • 2. Lists, strings, and tuples are all sequences Python Slicing
  • 3. Lists, strings, and tuples are all sequences Can be indexed by integers in the range 0…len(X)-1 Python Slicing
  • 4. Lists, strings, and tuples are all sequences Can be indexed by integers in the range 0…len(X)-1 Can also be sliced using aa rraannggee ooff iinnddiicceess Python Slicing
  • 5. Lists, strings, and tuples are all sequences Can be indexed by integers in the range 0…len(X)-1 Can also be sliced using aa rraannggee ooff iinnddiicceess >>>>>>>>>>>> element = 'uranium' >>>>>>>>>>>> 0 1 2 3 4 5 6 7 u r a n i u m -7 -6 -5 -4 -3 -2 -1 Python Slicing
  • 6. Lists, strings, and tuples are all sequences Can be indexed by integers in the range 0…len(X)-1 Can also be sliced using aa rraannggee ooff iinnddiicceess >>>>>>>>>>>> element = 'uranium' >>>>>>>>>>>> print element[1:4] ran >>>>>>>>>>>> 0 1 2 3 4 5 6 7 u r a n i u m -7 -6 -5 -4 -3 -2 -1 Python Slicing
  • 7. Lists, strings, and tuples are all sequences Can be indexed by integers in the range 0…len(X)-1 Can also be sliced using aa rraannggee ooff iinnddiicceess >>>>>>>>>>>> element = 'uranium' >>>>>>>>>>>> print element[1:4] ran >>>>>>>>>>>> print element[:4] uran >>>>>>>>>>>> 0 1 2 3 4 5 6 7 u r a n i u m -7 -6 -5 -4 -3 -2 -1 Python Slicing
  • 8. Lists, strings, and tuples are all sequences Can be indexed by integers in the range 0…len(X)-1 Can also be sliced using aa rraannggee ooff iinnddiicceess >>>>>>>>>>>> element = 'uranium' >>>>>>>>>>>> print element[1:4] ran >>>>>>>>>>>> print element[:4] uran >>>>>>>>>>>> print element[4:] 0 1 2 3 4 5 6 7 u r a n i u m -7 -6 -5 -4 -3 -2 -1 ium >>>>>>>>>>>> Python Slicing
  • 9. Lists, strings, and tuples are all sequences Can be indexed by integers in the range 0…len(X)-1 Can also be sliced using aa rraannggee ooff iinnddiicceess >>>>>>>>>>>> element = 'uranium' >>>>>>>>>>>> print element[1:4] ran >>>>>>>>>>>> print element[:4] uran >>>>>>>>>>>> print element[4:] 0 1 2 3 4 5 6 7 u r a n i u m -7 -6 -5 -4 -3 -2 -1 ium >>>>>>>>>>>> print element[-4:] nium >>>>>>>>>>>> Python Slicing
  • 10. Python checks bounds when indexing Python Slicing
  • 11. Python checks bounds when indexing But truncates when slicing Python Slicing
  • 12. Python checks bounds when indexing But truncates when slicing >>>>>>>>>>>>>>>>>>>>>>>> eelleemmeenntt == ''uurraanniiuumm'' >>>>>>>>>>>> 0 1 2 3 4 5 6 7 u r a n i u m -7 -6 -5 -4 -3 -2 -1 Python Slicing
  • 13. Python checks bounds when indexing But truncates when slicing >>>>>>>>>>>>>>>>>>>>>>>> eelleemmeenntt == ''uurraanniiuumm'' >>>>>>>>>>>> print element[400] IIIInnnnddddeeeexxxxEEEErrrrrrrroooorrrr:::: ssssttttrrrriiiinnnngggg iiiinnnnddddeeeexxxx oooouuuutttt ooooffff rrrraaaannnnggggeeee >>>>>>>>>>>> 0 1 2 3 4 5 6 7 u r a n i u m -7 -6 -5 -4 -3 -2 -1 Python Slicing
  • 14. Python checks bounds when indexing But truncates when slicing >>>>>>>>>>>>>>>>>>>>>>>> eelleemmeenntt == ''uurraanniiuumm'' >>>>>>>>>>>> print element[400] IIIInnnnddddeeeexxxxEEEErrrrrrrroooorrrr:::: ssssttttrrrriiiinnnngggg iiiinnnnddddeeeexxxx oooouuuutttt ooooffff rrrraaaannnnggggeeee >>>>>>>>>>>> print element[1:400] ranium >>>>>>>>>>>> 0 1 2 3 4 5 6 7 u r a n i u m -7 -6 -5 -4 -3 -2 -1 Python Slicing
  • 15. Python checks bounds when indexing But truncates when slicing >>>>>>>>>>>>>>>>>>>>>>>> eelleemmeenntt == ''uurraanniiuumm'' >>>>>>>>>>>> print element[400] IIIInnnnddddeeeexxxxEEEErrrrrrrroooorrrr:::: ssssttttrrrriiiinnnngggg iiiinnnnddddeeeexxxx oooouuuutttt ooooffff rrrraaaannnnggggeeee >>>>>>>>>>>> print element[1:400] ranium >>>>>>>>>>>> 0 1 2 3 4 5 6 7 u r a n i u m -7 -6 -5 -4 -3 -2 -1 "A foolish consistency is the hobgoblin of little minds." — Ralph Waldo Emerson Python Slicing
  • 16. Python checks bounds when indexing But truncates when slicing >>>>>>>>>>>>>>>>>>>>>>>> eelleemmeenntt == ''uurraanniiuumm'' >>>>>>>>>>>> print element[400] IIIInnnnddddeeeexxxxEEEErrrrrrrroooorrrr:::: ssssttttrrrriiiinnnngggg iiiinnnnddddeeeexxxx oooouuuutttt ooooffff rrrraaaannnnggggeeee >>>>>>>>>>>> print element[1:400] ranium >>>>>>>>>>>> 0 1 2 3 4 5 6 7 u r a n i u m -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 Python Slicing
  • 17. So text[1:3] is 0, 1, or 2 characters long Python Slicing
  • 18. So text[1:3] is 0, 1, or 2 characters long '' '' ''aa'' '''' 'ab' 'b' 'abc' 'bc' 'abcdef' 'bc' Python Slicing
  • 19. For consistency, text[1:1] is the empty string Python Slicing
  • 20. For consistency, text[1:1] is the empty string – From index 1 up to (but not including) index 1 Python Slicing
  • 21. 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 tthhee eemmppttyy ssttrriinngg Python Slicing
  • 22. 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 tthhee eemmppttyy ssttrriinngg – Not the reverse of text[1:3] Python Slicing
  • 23. 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 tthhee eemmppttyy ssttrriinngg – Not the reverse of text[1:3] But text[1:-1] is everything except the first and last characters Python Slicing
  • 24. Slicing always creates a new collection Python Slicing
  • 25. Slicing always creates a new collection Beware of aliasing Python Slicing
  • 26. Slicing always creates a new collection Beware of aliasing >>>>>>>>>>>>>>>>>>>>>>>> ppooiinnttss == [[[[1100,, 1100]],, [[2200,, 2200]],, [[3300,, 3300]],, [[4400,, 4400]]]] >>>>>>>>>>>> Python Slicing
  • 27. Slicing always creates a new collection Beware of aliasing >>>>>>>>>>>>>>>>>>>>>>>> ppooiinnttss == [[[[1100,, 1100]],, [[2200,, 2200]],, [[3300,, 3300]],, [[4400,, 4400]]]] >>>>>>>>>>>> middle = points[1:-1] >>>>>>>>>>>> Python Slicing
  • 28. Slicing always creates a new collection Beware of aliasing >>>>>>>>>>>>>>>>>>>>>>>> ppooiinnttss == [[[[1100,, 1100]],, [[2200,, 2200]],, [[3300,, 3300]],, [[4400,, 4400]]]] >>>>>>>>>>>> middle = points[1:-1] >>>>>>>>>>>> middle[0][0] = 'whoops' >>>>>>>>>>>> Python Slicing
  • 29. Slicing always creates a new collection Beware of aliasing >>>>>>>>>>>>>>>>>>>>>>>> ppooiinnttss == [[[[1100,, 1100]],, [[2200,, 2200]],, [[3300,, 3300]],, [[4400,, 4400]]]] >>>>>>>>>>>> middle = points[1:-1] >>>>>>>>>>>> middle[0][0] = 'whoops' >>>>>>>>>>>> middle[1][0] = 'aliasing' >>>>>>>>>>>> Python Slicing
  • 30. Slicing always creates a new collection Beware of aliasing >>>>>>>>>>>>>>>>>>>>>>>> ppooiinnttss == [[[[1100,, 1100]],, [[2200,, 2200]],, [[3300,, 3300]],, [[4400,, 4400]]]] >>>>>>>>>>>> middle = points[1:-1] >>>>>>>>>>>> middle[0][0] = 'whoops' >>>>>>>>>>>> middle[1][0] = 'aliasing' >>>>>>>>>>>> print middle [['whoops', 20], ['aliasing', 30]] >>>>>>>>>>>> Python Slicing
  • 31. Slicing always creates a new collection Beware of aliasing >>>>>>>>>>>>>>>>>>>>>>>> ppooiinnttss == [[[[1100,, 1100]],, [[2200,, 2200]],, [[3300,, 3300]],, [[4400,, 4400]]]] >>>>>>>>>>>> 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]] >>>>>>>>>>>> Python Slicing
  • 32. 10 10 20 points 20 30 30 40 40 Python Slicing
  • 33. 10 10 20 points 20 30 30 middle 40 40 Python Slicing
  • 34. 10 10 points 'whoops' 20 30 30 middle 40 40 Python Slicing
  • 35. 10 10 points 'whoops' 20 30 middle 'aliasing' 40 40 Python Slicing
  • 36. created by Greg Wilson October 2010 Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information.