<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Justin Watson</title>
    <description>The latest articles on Forem by Justin Watson (@jwatson).</description>
    <link>https://forem.com/jwatson</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1688513%2F9923946b-69da-4b04-8d4a-8dd26758468a.jpeg</url>
      <title>Forem: Justin Watson</title>
      <link>https://forem.com/jwatson</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/jwatson"/>
    <language>en</language>
    <item>
      <title>NumPy for the Curious Beginner</title>
      <dc:creator>Justin Watson</dc:creator>
      <pubDate>Thu, 18 Jul 2024 20:43:53 +0000</pubDate>
      <link>https://forem.com/jwatson/numpy-for-the-curious-beginner-1iog</link>
      <guid>https://forem.com/jwatson/numpy-for-the-curious-beginner-1iog</guid>
      <description>&lt;ul&gt;
&lt;li&gt;What is NumPy anyways?&lt;/li&gt;
&lt;li&gt;The Rules of NumPy Arrays&lt;/li&gt;
&lt;li&gt;Use Cases for NumPy&lt;/li&gt;
&lt;li&gt;Installing NumPy&lt;/li&gt;
&lt;li&gt;
NumPy Array Fundamentals

&lt;ul&gt;
&lt;li&gt;numpy.zeros(shape, dtype)&lt;/li&gt;
&lt;li&gt;numpy.arange(start, stop, step, dtype)&lt;/li&gt;
&lt;li&gt;numpy.linspace(start, stop, end)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

Beyond the Basics

&lt;ul&gt;
&lt;li&gt;Indexing and slicing&lt;/li&gt;
&lt;li&gt;Key attributes&lt;/li&gt;
&lt;li&gt;Deleting elements&lt;/li&gt;
&lt;li&gt;Sorting NumPy elements&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Conclusion&lt;/li&gt;

&lt;/ul&gt;



&lt;h2&gt;
  
  
  What is NumPy anyways?
&lt;/h2&gt;

&lt;p&gt;Simply put, NumPy(Numerical Python) is a Python Library specifically created to implement support for multi-dimensional arrays and matrices by allowing developers to import mathematical functions to be used on these arrays. That said, a NumPy array is not your average array, as we're about to explore.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Rules of NumPy Arrays
&lt;/h2&gt;

&lt;p&gt;The heart of the NumPy library is the &lt;code&gt;ndarray&lt;/code&gt; object. This is an object that "represents a multidimensional, homogeneous array of fixed-size items" as the &lt;a href="https://numpy.org/doc/stable/index.html" rel="noopener noreferrer"&gt;NumPy Docs&lt;/a&gt; eloquently put it. In English, this essentially means that we can represent a 1-dimensional or higher-dimensional array, where each element is the same data type. Additionally, NumPy arrays have a fixed size at creation, and changing a &lt;code&gt;ndarray&lt;/code&gt;'s size technically creates a new array. These restrictions seem less than ideal at first glance, but it is in this limitation that NumPy is able to shine and focus on it's use case.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use Cases for NumPy
&lt;/h2&gt;

&lt;p&gt;NumPy, as it's abbreviated name implies, is an absolute powerhouse when it comes to numerical computation. NumPy is actually written in pre-compiled C code, which serves as the secret sauce to it's speed and efficiency. In technical terms, this is what's known as "vectorization", or plainly put, the absence of explicit looping and indexing, in exchange for these operations happening in the background. Let's take a look at an example of this, in comparison to non-vectorized code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzl1r2ko0l3feehodlczs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzl1r2ko0l3feehodlczs.png" alt="A code snippet of a vectorized NumPy operation" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pretty neat yeah? Let's see how this would work without vectorization.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmmrsj5nnmd9vpw6uih7r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmmrsj5nnmd9vpw6uih7r.png" alt="A non-vectorized NumPy operation" width="800" height="510"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The magic of NumPy's vectorization is beautifully demonstrated in the simple line &lt;code&gt;fahrenheit_temps = celsius_temps * conversion_factor + 32&lt;/code&gt;.  Instead of manually looping through each temperature, this single line effortlessly applies the conversion formula to the entire array at once. This is possible because NumPy cleverly "broadcasts"(a concept we will dive into later in the blog) the single conversion factor to match the size of the temperature array, allowing each element to be transformed simultaneously. This is once again thanks to the C code under the hood taking care of our heavy lifting, so to speak. This might not seem very important in smaller scale work, but if you see yourself working on larger scale datasets down the line, you want to keep this efficiency in mind.&lt;/p&gt;

&lt;p&gt;In summary, NumPy calculates at a level of efficiency that Python's built-in sequences can't keep up with, at least when it comes to high volume data. As. a result of this, it is widely used for mathematical/scientific computing in the following areas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data Analysis and Manipulation: NumPy provides the foundation for libraries like pandas, enabling efficient handling of large datasets, cleaning, filtering, transforming, and aggregating data for analysis and visualization. If you have even somewhat of an interest in utilizing Python for data analysis and aggregation, NumPy needs to be in your toolbox.&lt;/li&gt;
&lt;li&gt;Linear Algebra: NumPy offers extensive tools for linear algebra operations, including matrix multiplication and linear equations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installing NumPy
&lt;/h2&gt;

&lt;p&gt;If you already have python &amp;gt;3.4 set up, you already have pip by default and can just use the line &lt;code&gt;pip install numpy&lt;/code&gt; in your terminal and move on with the blog. If you have not actually set up Python on your local machine yet, or just want to know about a new tool that may be helpful to you, I'd highly recommend the &lt;a href="https://www.anaconda.com/download" rel="noopener noreferrer"&gt;Anaconda Distribution&lt;/a&gt;(no actual snakes involved in installation don't worry). This distribution comes assembled with easy to use searching and installation for packages like NumPy, Pandas, Matplotlib for visualization, and many other commonly used packages for scientific computing and data science alongside an attractive GUI to easily manage all of this. You can download it and install it from the hyperlink provided. The NumPy package can be easily installed from the Anaconda Navigator GUI, but for those inclined to use the command line, here's what I recommend, directly from the &lt;a href="https://numpy.org/doc/stable/index.html" rel="noopener noreferrer"&gt;NumPy Docs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3vgt3g4c376hidavs0c7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3vgt3g4c376hidavs0c7.png" alt="A code snippet of how to install numpy with conda" width="800" height="337"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  NumPy Array Fundamentals
&lt;/h2&gt;

&lt;p&gt;With all of the introduction and set up out of the way, let's establish some of the fundamentals of a NumPy array. This will focus more on NumPy specific aspects, rather than teaching you the basics of arrays in general. Let's start with some methods of creating an array in NumPy.&lt;/p&gt;

&lt;h3&gt;
  
  
  numpy.zeros(shape, dtype)
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqbge1o8r2mynqkul1861.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqbge1o8r2mynqkul1861.png" alt="An example of numpy's zero method" width="800" height="488"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There is a similar method called numpy.ones() that works relatively the same as .zeros(). numpy.empty() also works similarly, but fills the array with random elements instead. This results in a marginally faster way to fill up an array, if the use case does not require all zeroes or ones.&lt;/p&gt;

&lt;h3&gt;
  
  
  numpy.arange(start, stop, step, dtype)
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft12rm4v4avfbarlr3w7k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft12rm4v4avfbarlr3w7k.png" alt="numpy's arange method creating an array with intervals" width="800" height="357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  numpy.linspace(start, stop, end)
&lt;/h3&gt;

&lt;p&gt;As with .zeros(), .arange() has a similar method called .linspace() that takes in the start, stop, and number of elements. This is more useful when you want precise control over the number of elements and need evenly spaced floating-point values, and most especially want to stop the stepping at a specific number. Let's see this illustrated more clearly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh0v9iwwdrg2suzs5jg9m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh0v9iwwdrg2suzs5jg9m.png" alt="numpy's linspace method" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Beyond the Basics
&lt;/h2&gt;

&lt;p&gt;Now it's time to get a bit fancy. A common task in NumPy is indexing and slicing across the rows and columns of matrices. This is a bit more complex than your usual array traversal when NumPy arrays come into the equation. Take some time to really digest this.&lt;/p&gt;

&lt;h3&gt;
  
  
  Indexing and slicing
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzv1ov7i84ylncca9p3zs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzv1ov7i84ylncca9p3zs.png" alt="A snippet of indexing and slicing numpy arrays" width="800" height="605"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Key attributes
&lt;/h3&gt;

&lt;p&gt;In NumPy, an array's dimensions describe its structure: a one-dimensional array is a list, a two-dimensional array is a table, and higher dimensions represent increasingly complex structures that take a bit more explanation than this blog aims to provide today.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcov5l4wt3mpxpt2vafz1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcov5l4wt3mpxpt2vafz1.png" alt="A snippet of numpy's attributes" width="800" height="596"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Deleting elements
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7ylh6qxpehxvvqerdqgc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7ylh6qxpehxvvqerdqgc.png" alt="Delete elements in a NumPy array" width="800" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Sorting NumPy elements
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fycmwwtbza6z17kzcm5ih.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fycmwwtbza6z17kzcm5ih.png" alt="Sorting numpy elements" width="800" height="609"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[::-1] is a handy trick to reverse an array.&lt;/li&gt;
&lt;li&gt;np.argsort() doesn't directly sort the values; it returns an array of indices that indicate how the array would be sorted. Sometimes,
you don't need to actually rearrange the data. This is a niche situation, but can be marginally beneficial for memory.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;There's a lot more to NumPy, but rest assured this is plenty of information to start playing around with larger arrays. I'd highly recommend the &lt;a href="https://numpy.org/doc/" rel="noopener noreferrer"&gt;NumPy docs&lt;/a&gt;. I personally used this alongside the &lt;a href="https://app.datacamp.com/learn/courses/introduction-to-numpy" rel="noopener noreferrer"&gt;Intro to NumPy&lt;/a&gt; course on Datacamp. Thank you for reading!&lt;/p&gt;

</description>
      <category>python</category>
      <category>numpy</category>
      <category>data</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Python, for Javascript Devs</title>
      <dc:creator>Justin Watson</dc:creator>
      <pubDate>Fri, 28 Jun 2024 18:53:44 +0000</pubDate>
      <link>https://forem.com/jwatson/python-for-javascript-devs-a59</link>
      <guid>https://forem.com/jwatson/python-for-javascript-devs-a59</guid>
      <description>&lt;h2&gt;
  
  
  My Story
&lt;/h2&gt;

&lt;p&gt;I initially began learning Python in 2019 with the edX course, &lt;a href="https://www.edx.org/learn/computer-science/massachusetts-institute-of-technology-introduction-to-computer-science-and-programming-using-python" rel="noopener noreferrer"&gt;MITx: Introduction to Computer Science and Programming Using Python | edX&lt;/a&gt;. This was my first foray into programming beyond the front-end technologies I knew, that being HTML and CSS. It was challenging, to say the least. Shortly after, I shifted my focus towards Web Development by enrolling in a coding bootcamp, which focused more on my previous foundation of HTML and CSS, as well as adding JavaScript into the mix.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Python can do for you
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-us.googleusercontent.com%2Fdocsz%2FAD_4nXezPsS8jRgkrc3jekqGzMCR92q9X0mpGRjwjnKDVe61y-sXh0vVfwzro_4VG6Fu6-pxSDlGa3yyqDrKV66QtFtJ42EnSQt-CIBXO5nOZOrXanq-ttnOe_7QZtUiG2-qp_qdD2KqwO1t6rXXDkwSLXufs9C6%3Fkey%3Du2IDCQP4e76FE2tN4xZLHA" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-us.googleusercontent.com%2Fdocsz%2FAD_4nXezPsS8jRgkrc3jekqGzMCR92q9X0mpGRjwjnKDVe61y-sXh0vVfwzro_4VG6Fu6-pxSDlGa3yyqDrKV66QtFtJ42EnSQt-CIBXO5nOZOrXanq-ttnOe_7QZtUiG2-qp_qdD2KqwO1t6rXXDkwSLXufs9C6%3Fkey%3Du2IDCQP4e76FE2tN4xZLHA" alt="A graph of various programming languages and their popularity from 2002 to 2024."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Python was the TIOBE Index language of the year 2020 and 2021. It is the #1 language of June 2024, as it was in June 2023.&lt;/p&gt;

&lt;p&gt;Learning Python expands a programmer's toolbox, showcases curiosity, and can reveal hidden aptitudes and interests a developer didn’t know they had. Its minimalistic approach lends itself to developers being able to apply Python in no time, even more so if they already have a foundation in another programming language. While Python is largely known for its usage in the Data Science space, Python can also be combined with the django or flask frameworks for web development or be used for automation and scripting, potentially replacing Shell scripts in certain use cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Nitty Gritty
&lt;/h2&gt;

&lt;p&gt;Python, like any programming language, has certain traits and quirks regarding how it works that may differ from what you’re used to. Let’s briefly go over how Python works under the hood so we can have more context for what’s to come.&lt;/p&gt;

&lt;p&gt;Python is a programming language that is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Interpreted: Python is executed line by line, rather than being compiled into machine code all at once. The official Python website goes with the term "interpreted". Although Python is technically both compiled and interpreted, this distinction is beyond the scope of this blog and not something to be concerned about for now.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Object-oriented: This means that Python code is organized into objects, which can have their own properties and methods. This makes it easy to create complex and reusable code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;High-level: This is just a fancy term to say Python code is written in a way that is similar to human language, rather than machine code. We’ll see this demonstrated in the code snippets later on.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Dynamically typed: Python variables do not have a fixed type. Their type is evaluated at runtime, so a variable of type int can become a string, and so forth. This makes it easy to write flexible and adaptable code but can also lead to some unpredictable outcomes.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  My approach to learning Python
&lt;/h2&gt;

&lt;p&gt;As someone familiar with JavaScript, the best way for me to learn Python was to focus on its specific quirks and under-the-hood mechanisms. To gain a deeper understanding of Python, I relied heavily on the &lt;a href="https://docs.python.org/3/" rel="noopener noreferrer"&gt;Python documentation&lt;/a&gt; in addition to utilizing the &lt;a href="https://www.codecademy.com/enrolled/courses/learn-python-3" rel="noopener noreferrer"&gt;Learn Python 3 | Codecademy&lt;/a&gt; course. Documentation might seem like an old- school way to go about learning coding in an era where websites like Codecademy or freecodecamp are available at a moment’s notice, but I felt this was the best way to uncover Python's inner workings and truly comprehend how it functions. Taking the time to understand behind- the- scenes aspects of a language will level up your programming so much more.&lt;/p&gt;

&lt;p&gt;Now, let's look at the syntax.&lt;/p&gt;

&lt;h2&gt;
  
  
  Variables
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-us.googleusercontent.com%2Fdocsz%2FAD_4nXetZY8PIyUy2e6HSq1h1ycOqRodf8kdrP4pVHOpq7iAIWTImLpifDewt0Gss_mNAL2O0nktavUajPQ3CdvUi_Rtv4m1DixRgeqk-A0vKqXjCMW9SrG21vlgRVMFeQny7uvVaOXeGDsacguOhUURQCYYX5NK%3Fkey%3Du2IDCQP4e76FE2tN4xZLHA" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-us.googleusercontent.com%2Fdocsz%2FAD_4nXetZY8PIyUy2e6HSq1h1ycOqRodf8kdrP4pVHOpq7iAIWTImLpifDewt0Gss_mNAL2O0nktavUajPQ3CdvUi_Rtv4m1DixRgeqk-A0vKqXjCMW9SrG21vlgRVMFeQny7uvVaOXeGDsacguOhUURQCYYX5NK%3Fkey%3Du2IDCQP4e76FE2tN4xZLHA" alt="A code snippet of variables in Python"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conditional Statements
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-us.googleusercontent.com%2Fdocsz%2FAD_4nXcGxcEQh6fvDwNFETqhdCeR28mtzbrdjxuJXZ8N1QNnatKZ9LbXGVMnyGjTzO-a5e7ZsfU8mbR9VnM-dfvp0wkjZUl2TyemuonnIJVr4tEI0Q2v0CktLJaCLvJbVAUkLLhAPXUMt4oRgnXk09DQH9nM3wxT%3Fkey%3Du2IDCQP4e76FE2tN4xZLHA" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-us.googleusercontent.com%2Fdocsz%2FAD_4nXcGxcEQh6fvDwNFETqhdCeR28mtzbrdjxuJXZ8N1QNnatKZ9LbXGVMnyGjTzO-a5e7ZsfU8mbR9VnM-dfvp0wkjZUl2TyemuonnIJVr4tEI0Q2v0CktLJaCLvJbVAUkLLhAPXUMt4oRgnXk09DQH9nM3wxT%3Fkey%3Du2IDCQP4e76FE2tN4xZLHA" alt="A code snippet of conditional statements in Python"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Loops
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-us.googleusercontent.com%2Fdocsz%2FAD_4nXdoVoLXgsJiGrBDTPha_DW5gTcvMPABePm9jzg_kyqHgiwSyk7g8B19s7MlkuL9o0nX7WT-6uWXcpy42RS91cXdQOGZVeSbgNkti-plFeTkA500-FPPjUpVzbjzfnbC5Fd9mF6OP3_tCdVlfcNX46zSU18n%3Fkey%3Du2IDCQP4e76FE2tN4xZLHA" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-us.googleusercontent.com%2Fdocsz%2FAD_4nXdoVoLXgsJiGrBDTPha_DW5gTcvMPABePm9jzg_kyqHgiwSyk7g8B19s7MlkuL9o0nX7WT-6uWXcpy42RS91cXdQOGZVeSbgNkti-plFeTkA500-FPPjUpVzbjzfnbC5Fd9mF6OP3_tCdVlfcNX46zSU18n%3Fkey%3Du2IDCQP4e76FE2tN4xZLHA" alt="A code snippet of Loops in Python"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Math
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-us.googleusercontent.com%2Fdocsz%2FAD_4nXcL5jrGpbeXs_JCxPbVPgFJ_5BdWzGXTbTE1ZzG3e2ok4-lt3oIpSSaaa8pJhnCS_QNA4h-qS0Vn40I3vn3kcJnpfBqc4Xad49kK-DaFiEsTR-LL_SqCNS8S8OR-CXlmc9gvFra2Mp4AyomAV8AeBkKXHWl%3Fkey%3Du2IDCQP4e76FE2tN4xZLHA" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-us.googleusercontent.com%2Fdocsz%2FAD_4nXcL5jrGpbeXs_JCxPbVPgFJ_5BdWzGXTbTE1ZzG3e2ok4-lt3oIpSSaaa8pJhnCS_QNA4h-qS0Vn40I3vn3kcJnpfBqc4Xad49kK-DaFiEsTR-LL_SqCNS8S8OR-CXlmc9gvFra2Mp4AyomAV8AeBkKXHWl%3Fkey%3Du2IDCQP4e76FE2tN4xZLHA" alt="A code snippet of the various math quirks in Python"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Arrays, aka Lists
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-us.googleusercontent.com%2Fdocsz%2FAD_4nXdGZz3tpeMVw3fzWt2hYXc3X14J9I0CWzKpW1TtwcDXLGTaF8CkU1PHurQQNbEIl1T1XjG1S1NEPogmQzsHM_9KqBIcJNO3HYMuB_QTtO5UH8U5_FxAqjoHwUxN8bc72Em49yX5-vq0nUngnvwxJxe2mxDC%3Fkey%3Du2IDCQP4e76FE2tN4xZLHA" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-us.googleusercontent.com%2Fdocsz%2FAD_4nXdGZz3tpeMVw3fzWt2hYXc3X14J9I0CWzKpW1TtwcDXLGTaF8CkU1PHurQQNbEIl1T1XjG1S1NEPogmQzsHM_9KqBIcJNO3HYMuB_QTtO5UH8U5_FxAqjoHwUxN8bc72Em49yX5-vq0nUngnvwxJxe2mxDC%3Fkey%3Du2IDCQP4e76FE2tN4xZLHA"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2D Arrays
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-us.googleusercontent.com%2Fdocsz%2FAD_4nXeUrVIh0rxp69la1-XtgxyXMkPqCEBNMLu82P3XTYAL7OBP3XCKrio5xrNK5-nywyKl7mZtjIWPBMDfS1Zm0DhWNj1MGjbdPsYLyv2Y0z-3XQfk3Wfyvekira5ux4NORx_nTsfx4_6H8IRCark6dKD7-7Y%3Fkey%3Du2IDCQP4e76FE2tN4xZLHA" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-us.googleusercontent.com%2Fdocsz%2FAD_4nXeUrVIh0rxp69la1-XtgxyXMkPqCEBNMLu82P3XTYAL7OBP3XCKrio5xrNK5-nywyKl7mZtjIWPBMDfS1Zm0DhWNj1MGjbdPsYLyv2Y0z-3XQfk3Wfyvekira5ux4NORx_nTsfx4_6H8IRCark6dKD7-7Y%3Fkey%3Du2IDCQP4e76FE2tN4xZLHA"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;This about wraps up the fundamental building blocks of Python and its unique characteristics. While Python offers powerful tools like the &lt;a href="https://docs.python.org/3/library/collections.html#collections.deque" rel="noopener noreferrer"&gt;collections.deque&lt;/a&gt; and &lt;a href="https://docs.python.org/3/library/heapq.html" rel="noopener noreferrer"&gt;heapq&lt;/a&gt; module to easily implement stacks, queues, and priority queues, exploring these in detail is beyond the scope of this introductory blog post. I encourage you to continue exploring the language (or begin your journey if you haven't already!) to uncover all that this amazing language offers. Thank you for reading.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>python</category>
    </item>
  </channel>
</rss>
