2 options
Python data structures and algorithms : improve the performance and speed of your applications / Benjamin Baka.
- Format:
- Book
- Author/Creator:
- Baka, Benjamin, author.
- Language:
- English
- Subjects (All):
- Python (Computer program language).
- Data structures (Computer science).
- Computer algorithms.
- Physical Description:
- 1 online resource (303 pages) : illustrations
- Edition:
- 1st edition
- Place of Publication:
- Birmingham : Packt, 2017.
- System Details:
- text file
- Summary:
- Implement classic and functional data structures and algorithms using Python About This Book A step by step guide, which will provide you with a thorough discussion on the analysis and design of fundamental Python data structures. Get a better understanding of advanced Python concepts such as big-o notation, dynamic programming, and functional data structures. Explore illustrations to present data structures and algorithms, as well as their analysis, in a clear, visual manner. Who This Book Is For The book will appeal to Python developers. A basic knowledge of Python is expected. What You Will Learn Gain a solid understanding of Python data structures. Build sophisticated data applications. Understand the common programming patterns and algorithms used in Python data science. Write efficient robust code. In Detail Data structures allow you to organize data in a particular way efficiently. They are critical to any problem, provide a complete solution, and act like reusable code. In this book, you will learn the essential Python data structures and the most common algorithms. With this easy-to-read book, you will be able to understand the power of linked lists, double linked lists, and circular linked lists. You will be able to create complex data structures such as graphs, stacks and queues. We will explore the application of binary searches and binary search trees. You will learn the common techniques and structures used in tasks such as preprocessing, modeling, and transforming data. We will also discuss how to organize your code in a manageable, consistent, and extendable way. The book will explore in detail sorting algorithms such as bubble sort, selection sort, insertion sort, and merge sort. By the end of the book, you will learn how to build components that are easy to understand, debug, and use in different applications. Style and Approach The easy-to-read book with its fast-paced nature will improve the productivity of Python programmers and improve the performance of Python applications. Downloading the example code for this book. You can download the example code files for all Packt books you have purchased from your account at http://www.PacktPub.com. If you purchased this book elsewhere, you can visit http://www.PacktPub.com/support and register to have the code file.
- Contents:
- Cover
- Title Page
- Copyright
- Credits
- About the Author
- About the Reviewer
- www.PacktPub.com
- Customer Feedback
- Table of Contents
- Preface
- Chapter 1: Python Objects, Types, and Expressions
- Understanding data structures and algorithms
- Python for data
- The Python environment
- Variables and expressions
- Variable scope
- Flow control and iteration
- Overview of data types and objects
- Strings
- Lists
- Functions as first class objects
- Higher order functions
- Recursive functions
- Generators and co-routines
- Classes and object programming
- Special methods
- Inheritance
- Data encapsulation and properties
- Summary
- Chapter 2: Python Data Types and Structures
- Operations and expressions
- Boolean operations
- Comparison and Arithmetic operators
- Membership, identity, and logical operations
- Built-in data types
- None type
- Numeric Types
- Representation error
- Sequences
- Tuples
- Dictionaries
- Sorting dictionaries
- Dictionaries for text analysis
- Sets
- Immutable sets
- Modules for data structures and algorithms
- Collections
- Deques
- ChainMaps
- Counter objects
- Ordered dictionaries
- defaultdict
- Named tuples
- Arrays
- Chapter 3: Principles of Algorithm Design
- Algorithm design paradigms
- Recursion and backtracking
- Backtracking
- Divide and conquer - long multiplication
- Can we do better? A recursive approach
- Runtime analysis
- Asymptotic analysis
- Big O notation
- Composing complexity classes
- Omega notation (Ω)
- Theta notation (ϴ)
- Amortized analysis
- Chapter 4: Lists and Pointer Structures
- Pointer structures
- Nodes
- Finding endpoints
- Node
- Other node types
- Singly linked lists
- Singly linked list class
- Append operation
- A faster append operation
- Getting the size of the list.
- Improving list traversal
- Deleting nodes
- List search
- Clearing a list
- Doubly linked lists
- A doubly linked list node
- Doubly linked list
- Delete operation
- Circular lists
- Appending elements
- Deleting an element
- Iterating through a circular list
- Chapter 5: Stacks and Queues
- Stacks
- Stack implementation
- Push operation
- Pop operation
- Peek
- Bracket-matching application
- Queues
- List-based queue
- Enqueue operation
- Dequeue operation
- Stack-based queue
- Node-based queue
- Queue class
- Application of queues
- Media player queue
- Chapter 6: Trees
- Terminology
- Tree nodes
- Binary trees
- Binary search trees
- Binary search tree implementation
- Binary search tree operations
- Finding the minimum and maximum nodes
- Inserting nodes
- Searching the tree
- Tree traversal
- Depth-first traversal
- In-order traversal and infix notation
- Pre-order traversal and prefix notation
- Post-order traversal and postfix notation.
- Breadth-first traversal
- Benefits of a binary search tree
- Expression trees
- Parsing a reverse Polish expression
- Balancing trees
- Heaps
- Chapter 7: Hashing and Symbol Tables
- Hashing
- Perfect hashing functions
- Hash table
- Putting elements
- Getting elements
- Testing the hash table
- Using [] with the hash table
- Non-string keys
- Growing a hash table
- Open addressing
- Chaining
- Symbol tables
- Chapter 8: Graphs and Other Algorithms
- Graphs
- Directed and undirected graphs
- Weighted graphs
- Graph representation
- Adjacency list
- Adjacency matrix
- Graph traversal
- Breadth-first search
- Depth-first search
- Other useful graph methods.
- Priority queues and heaps
- Inserting
- Pop
- Testing the heap
- Selection algorithms
- Chapter 9: Searching
- Linear Search
- Unordered linear search
- Ordered linear search
- Binary search
- Interpolation search
- Choosing a search algorithm
- Chapter 10: Sorting
- Sorting algorithms
- Bubble sort
- Insertion sort
- Selection sort
- Quick sort
- List partitioning
- Pivot selection
- Implementation
- Heap sort
- Chapter 11: Selection Algorithms
- Selection by sorting
- Randomized selection
- Quick select
- Partition step
- Deterministic selection
- Median of medians
- Partitioning step
- Chapter 12: Design Techniques and Strategies
- Classification of algorithms
- Classification by implementation
- Recursion
- Logical
- Serial or parallel
- Deterministic versus nondeterministic algorithms
- Classification by complexity
- Complexity curves
- Classification by design
- Divide and conquer
- Dynamic programming
- Greedy algorithms
- Technical implementation
- Memoization
- Tabulation
- The Fibonacci series
- The Memoization technique
- The tabulation technique
- Divide
- Conquer
- Merge
- Merge sort
- Coin-counting problem
- Dijkstra's shortest path algorithm
- Complexity classes
- P versus NP
- NP-Hard
- NP-Complete
- Chapter 13: Implementations, Applications, and Tools
- Tools of the trade
- Data preprocessing
- Why process raw data?
- Missing data
- Feature scaling
- Min-max scalar
- Standard scalar
- Binarizing data
- Machine learning
- Types of machine learning
- Hello classifier
- A supervised learning example
- Gathering data
- Bag of words
- Prediction
- An unsupervised learning example
- K-means algorithm
- Prediction.
- Data visualization
- Bar chart
- Multiple bar charts
- Box plot
- Pie chart
- Bubble chart
- Index.
- Notes:
- Includes index.
- Description based on online resource; title from PDF title page (ebrary, viewed June 15, 2017).
- OCLC:
- 990784724
The Penn Libraries is committed to describing library materials using current, accurate, and responsible language. If you discover outdated or inaccurate language, please fill out this feedback form to report it and suggest alternative language.