Python Data Structures and Algorithms

Author: Benjamin Baka  

Publisher: Packt Publishing‎

Publication year: 2017

E-ISBN: 9781786465337

P-ISBN(Paperback): 9781786467355

Subject: TP301.6 algorithm theory;TP31 computer software;TP312 程序语言、算法语言

Keyword: 算法理论,计算机软件,程序语言、算法语言

Language: ENG

Access to resources Favorite

Disclaimer: Any content in publications that violate the sovereignty, the constitution or regulations of the PRC is not accepted or approved by CNPIEC.

Description

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 preprocessi

Chapter

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

Summary

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

Summary

Chapter 4: Lists and Pointer Structures

Arrays

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

Append operation

Delete operation

List search

Circular lists

Appending elements

Deleting an element

Iterating through a circular list

Summary

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

Enqueue operation

Dequeue operation

Node-based queue

Queue class

Enqueue operation

Dequeue operation

Application of queues

Media player queue

Summary

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

Deleting 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

Summary

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

Summary

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

Summary

Chapter 9: Searching

Linear Search

Unordered linear search

Ordered linear search

Binary search

Interpolation search

Choosing a search algorithm

Summary

Chapter 10: Sorting

Sorting algorithms

Bubble sort

Insertion sort

Selection sort

Quick sort

List partitioning

Pivot selection

Implementation

Heap sort

Summary

Chapter 11: Selection Algorithms

Selection by sorting

Randomized selection

Quick select

Partition step

Deterministic selection

Pivot selection

Median of medians

Partitioning step

Summary

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

Dynamic programming

Memoization

Tabulation

The Fibonacci series

The Memoization technique

The tabulation technique

Divide and conquer

Divide

Conquer

Merge

Merge sort

Greedy algorithms

Coin-counting problem

Dijkstra's shortest path algorithm

Complexity classes

P versus NP

NP-Hard

NP-Complete

Summary

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

Summary

Index

The users who browse this book also browse