Home Backend Development Python Tutorial The founder of the Python language explains why Python arrays are indexed from 0

The founder of the Python language explains why Python arrays are indexed from 0

Apr 30, 2017 pm 03:53 PM

Someone recently asked me on Twitter why Python uses 0-based array indexing (hereinafter referred to as 0-based), and asked me to read an article on this topic (very interesting). This brought back a lot of memories for me. ABC language, one of the ancestors of Python, uses a 1-based indexing method (hereinafter referred to as 1-based), while C language, another language that has a huge influence on Python, uses 0-based Way. Some of the first languages ​​I learned (Algol, Fortran, Pascal) were 1-based and some were fluid. I think one of the reasons why I decided to use 0-based indexing in Python was Python's slice syntax.

Let’s first look at how to use slices. Perhaps the most common usage is "cut out the first n bits from the array" or "cut out n bits from the i-th bit of the value" (the former is actually a special use of i==the starting bit). It would be very elegant if this syntax didn't need to be expressed in ugly +1 or -1 complements.

Using 0-based indexing, Python's half-open interval slicing and default matching interval slicing syntax becomes very beautiful: a[:n] and a[i:i+n], the former's standard writing is a[0: n].

If it is a 1-base indexing method, then if you want a[:n] to be expressed as "take the first n elements" (this is not possible), you must either use a closed interval slicing syntax, or use it in the slicing syntax The form of two parameters: slice starting bit and slice length. Using 1-based indexing, the half-open interval slicing syntax becomes inelegant. In this way, closed interval slicing syntax is used. In order to express taking n elements from the i-th position, you must write a[i:i+n-1]. From this point of view, if you use a 1-based index, it is more appropriate to use the form of slice starting bit + length. This way you can write a[i:n]. In fact, the ABC language does this - it uses a unique expression, written a@i|n. (See http://homepages.cwi.nl/~steven/abc/qr.html#EXPRESSIONS.

​But, does the index:length method apply in other situations? To be honest, I don't remember much about this, but I think I was fascinated by the elegance of semi-open interval syntax. Especially when the two slicing operations are adjacent and the end index value of the first slicing operation is the starting index value of the second slice, it is too beautiful to discard. For example, you want to cut an array into three parts at two points i and j - the three parts will be a[:i], a[i:j] and a[j:].

This is why I want Python to use 0-based indexing.

English original text: why Python uses 0-based indexing

The above is the detailed content of The founder of the Python language explains why Python arrays are indexed from 0. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers Of The Witch Tree - How To Unlock The Grappling Hook
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1672
14
PHP Tutorial
1276
29
C# Tutorial
1256
24
PHP and Python: Different Paradigms Explained PHP and Python: Different Paradigms Explained Apr 18, 2025 am 12:26 AM

PHP is mainly procedural programming, but also supports object-oriented programming (OOP); Python supports a variety of paradigms, including OOP, functional and procedural programming. PHP is suitable for web development, and Python is suitable for a variety of applications such as data analysis and machine learning.

Choosing Between PHP and Python: A Guide Choosing Between PHP and Python: A Guide Apr 18, 2025 am 12:24 AM

PHP is suitable for web development and rapid prototyping, and Python is suitable for data science and machine learning. 1.PHP is used for dynamic web development, with simple syntax and suitable for rapid development. 2. Python has concise syntax, is suitable for multiple fields, and has a strong library ecosystem.

How to run sublime code python How to run sublime code python Apr 16, 2025 am 08:48 AM

To run Python code in Sublime Text, you need to install the Python plug-in first, then create a .py file and write the code, and finally press Ctrl B to run the code, and the output will be displayed in the console.

PHP and Python: A Deep Dive into Their History PHP and Python: A Deep Dive into Their History Apr 18, 2025 am 12:25 AM

PHP originated in 1994 and was developed by RasmusLerdorf. It was originally used to track website visitors and gradually evolved into a server-side scripting language and was widely used in web development. Python was developed by Guidovan Rossum in the late 1980s and was first released in 1991. It emphasizes code readability and simplicity, and is suitable for scientific computing, data analysis and other fields.

Golang vs. Python: Performance and Scalability Golang vs. Python: Performance and Scalability Apr 19, 2025 am 12:18 AM

Golang is better than Python in terms of performance and scalability. 1) Golang's compilation-type characteristics and efficient concurrency model make it perform well in high concurrency scenarios. 2) Python, as an interpreted language, executes slowly, but can optimize performance through tools such as Cython.

How to run python with notepad How to run python with notepad Apr 16, 2025 pm 07:33 PM

Running Python code in Notepad requires the Python executable and NppExec plug-in to be installed. After installing Python and adding PATH to it, configure the command "python" and the parameter "{CURRENT_DIRECTORY}{FILE_NAME}" in the NppExec plug-in to run Python code in Notepad through the shortcut key "F6".

Python vs. C  : Learning Curves and Ease of Use Python vs. C : Learning Curves and Ease of Use Apr 19, 2025 am 12:20 AM

Python is easier to learn and use, while C is more powerful but complex. 1. Python syntax is concise and suitable for beginners. Dynamic typing and automatic memory management make it easy to use, but may cause runtime errors. 2.C provides low-level control and advanced features, suitable for high-performance applications, but has a high learning threshold and requires manual memory and type safety management.

Golang vs. Python: Key Differences and Similarities Golang vs. Python: Key Differences and Similarities Apr 17, 2025 am 12:15 AM

Golang and Python each have their own advantages: Golang is suitable for high performance and concurrent programming, while Python is suitable for data science and web development. Golang is known for its concurrency model and efficient performance, while Python is known for its concise syntax and rich library ecosystem.

See all articles