Home Backend Development Python Tutorial Detailed explanation of examples of connectors (+, +=) in Python

Detailed explanation of examples of connectors (+, +=) in Python

Jan 13, 2017 pm 04:11 PM

Preface

This article introduces the connectors (+, +=) in Python to you in detail through the problems found in a piece of sample code. Without further ado, let’s take a look at the detailed introduction. Bar.

Suppose there is the following piece of code:

1

2

3

4

5

6

7

8

9

10

a = [1, 2, 3, 4]

b = [5, 6, 7, 8, 9]

c = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

  

for item in (a, b, c):

 item += [0] * (10 - len(item))

  

print a

print b

print c

Copy after login

The meaning of this code is that there are three lists, and it is necessary to fill 0 at the end of the list whose length is not 10, so that The length becomes 10.

The output is as follows:

1

2

3

[1, 2, 3, 4, 0, 0, 0, 0, 0, 0]

[5, 6, 7, 8, 9, 0, 0, 0, 0, 0]

[11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

Copy after login

There is no problem here, everything is normal. However, now the requirements have changed and we need to pad the front of the list with a length other than 10 with zeros.

Then, we try to make the following changes:

1

2

3

4

5

6

7

8

9

10

a = [1, 2, 3, 4]

b = [5, 6, 7, 8, 9]

c = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

  

for item in (a, b, c):

 item = [0] * (10 - len(item)) + item

  

print a

print b

print c

Copy after login

Look at the output directly:

1

2

3

[1, 2, 3, 4]

[5, 6, 7, 8, 9]

[11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

Copy after login

The result is not That's what we imagined. If you don't see the problem, keep reading. Of course, if you have already seen the clues, there is no need to waste time here.

According to our inherent thinking, the above method is feasible, such as the following example:

1

2

3

4

>>> l = [1, 2, 3, 4, 5]

>>> l = [0]*5 + l

>>> l

[0, 0, 0, 0, 0, 1, 2, 3, 4, 5]

Copy after login

Such an operation allows the list to get the changes we expect.

But what if we add a few more steps:

1

2

3

4

5

6

7

8

>>> l = [1, 2, 3, 4, 5]

>>> id(l)

139935500860952

>>> l = [0]*5 + l

>>> l

[0, 0, 0, 0, 0, 1, 2, 3, 4, 5]

>>> id(l)

139935500783272

Copy after login

At this point, have you seen the problem? As you can see from the output of the id() method, the "l" at the back is no longer the "l" at the front.

Look at the following example again:

1

2

3

4

5

6

7

8

>>> l = [1, 2, 3, 4, 5]

>>> id(l)

139935500861024

>>> l += [0]*5

>>> l

[1, 2, 3, 4, 5, 0, 0, 0, 0, 0]

>>> id(l)

139935500861024

Copy after login

When using +=, "l" is preceded and followed by one. At this point, we should understand the fact that the example at the beginning of the article is not inexplicable, but has a reason.

Don’t worry, let’s look at the example again:

1

2

3

4

5

6

7

8

>>> t = (1, 2, 3, 4, 5)

>>> id(t)

139935501840656

>>> t += (0,)*5

>>> t

(1, 2, 3, 4, 5, 0, 0, 0, 0, 0)

>>> id(t)

139935502151336

Copy after login

As you can see, when we replace the list with a tuple, the result changes again.

So what if we use the + operation on tuples:

1

2

3

4

5

6

7

8

>>> t = (1, 2, 3, 4, 5)

>>> id(t)

139935501081200

>>> t = (0,)*5 + t

>>> t

(0, 0, 0, 0, 0, 1, 2, 3, 4, 5)

>>> id(t)

139935502151336

Copy after login

This is the same as the list result, no different.

So, let’s take a look at the string:

1

2

3

4

5

6

7

8

>>> s = "hello"

>>> id(s)

139935500909712

>>> s += "world"

>>> s

'helloworld'

>>> id(s)

139935500909664

Copy after login

The result is like a tuple, "s" is using += to concatenate a string Later, it was reassigned a value, and it was no longer the previous variable. Reflected in the memory, "s" has been opened up an additional storage space to store the value.

Here, the Python connectors we are going to talk about are + and +=. It should be noted that these two symbols have different meanings in Python. One is the addition operation used in mathematics, and the other is the splicing function used on sequence types. However, when used as an addition operator, it also follows the usage rules discussed in this article. Because discussing these two symbols is essentially discussing Python's immutable and mutable, that is, variable types and immutable types. For mutable types, we can modify the variable in place, which means that its storage space is readable and writable, such as a list; for immutable types, its storage space is read-only. , it cannot be modified. If you need to perform certain operations on the immutable type to get a new result, you need to create a new storage space to store the newly generated result.

From the examples listed above, we can draw the following conclusions:

For variable types:

+: represents the connection operation, the result of which will create a new object.

+=: Represents the append operation, that is, the in-place operation, which appends the content of another object to the object in place.

For immutable types: + and += both represent connection or summation operations. There is no difference between the two. The result of the operation will produce a new object.

Let’s analyze the example at the beginning of the article. Since for iteration is equivalent to assignment, for the sake of simplicity, we only analyze a, as shown below:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

>>> a = [1, 2, 3, 4]

>>> t = a

>>> id(a)

139712695835400

>>> id(t)

139712695835400

>>> t += [0]*6

>>> t

[1, 2, 3, 4, 0, 0, 0, 0, 0, 0]

>>> id(t)

139712695835400

>>> id(a)

139712695835400

>>> a

[1, 2, 3, 4, 0, 0, 0, 0, 0, 0]

>>>

>>>

>>> a = [1, 2, 3, 4]

>>> t = a

>>> id(a)

139712695835464

>>> id(t)

139712695835464

>>> t = [0]*6 + t

>>> t

[0, 0, 0, 0, 0, 0, 1, 2, 3, 4]

>>> a

[1, 2, 3, 4]

>>> id(a)

139712695835464

>>> id(t)

139712695835400

Copy after login

Here, t is a reference to a, which is equivalent to the item in the example at the beginning of the article. Using += to operate on t actually operates on a, and += operates in place, so when t is changed, a also changes; if + is used to operate on t, and the result is assigned to t, then At this time, t no longer points to a, but points to [0]*6 + t, so a has not been changed.

Summary

The above is the entire content of this article. What is discussed here is just a simple issue, but I have spent such a long time talking about this issue, so I want to say The thing is, if you don't fully understand these small issues, they may cause you trouble during the programming process.

For more detailed examples of connectors (+, +=) in Python, please pay attention to the PHP Chinese website for related articles!


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
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
3 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
1667
14
PHP Tutorial
1273
29
C# Tutorial
1255
24
Python: Games, GUIs, and More Python: Games, GUIs, and More Apr 13, 2025 am 12:14 AM

Python excels in gaming and GUI development. 1) Game development uses Pygame, providing drawing, audio and other functions, which are suitable for creating 2D games. 2) GUI development can choose Tkinter or PyQt. Tkinter is simple and easy to use, PyQt has rich functions and is suitable for professional development.

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.

Python and Time: Making the Most of Your Study Time Python and Time: Making the Most of Your Study Time Apr 14, 2025 am 12:02 AM

To maximize the efficiency of learning Python in a limited time, you can use Python's datetime, time, and schedule modules. 1. The datetime module is used to record and plan learning time. 2. The time module helps to set study and rest time. 3. The schedule module automatically arranges weekly learning tasks.

Python vs. C  : Exploring Performance and Efficiency Python vs. C : Exploring Performance and Efficiency Apr 18, 2025 am 12:20 AM

Python is better than C in development efficiency, but C is higher in execution performance. 1. Python's concise syntax and rich libraries improve development efficiency. 2.C's compilation-type characteristics and hardware control improve execution performance. When making a choice, you need to weigh the development speed and execution efficiency based on project needs.

Which is part of the Python standard library: lists or arrays? Which is part of the Python standard library: lists or arrays? Apr 27, 2025 am 12:03 AM

Pythonlistsarepartofthestandardlibrary,whilearraysarenot.Listsarebuilt-in,versatile,andusedforstoringcollections,whereasarraysareprovidedbythearraymoduleandlesscommonlyusedduetolimitedfunctionality.

Python: Automation, Scripting, and Task Management Python: Automation, Scripting, and Task Management Apr 16, 2025 am 12:14 AM

Python excels in automation, scripting, and task management. 1) Automation: File backup is realized through standard libraries such as os and shutil. 2) Script writing: Use the psutil library to monitor system resources. 3) Task management: Use the schedule library to schedule tasks. Python's ease of use and rich library support makes it the preferred tool in these areas.

Learning Python: Is 2 Hours of Daily Study Sufficient? Learning Python: Is 2 Hours of Daily Study Sufficient? Apr 18, 2025 am 12:22 AM

Is it enough to learn Python for two hours a day? It depends on your goals and learning methods. 1) Develop a clear learning plan, 2) Select appropriate learning resources and methods, 3) Practice and review and consolidate hands-on practice and review and consolidate, and you can gradually master the basic knowledge and advanced functions of Python during this period.

Python vs. C  : Understanding the Key Differences Python vs. C : Understanding the Key Differences Apr 21, 2025 am 12:18 AM

Python and C each have their own advantages, and the choice should be based on project requirements. 1) Python is suitable for rapid development and data processing due to its concise syntax and dynamic typing. 2)C is suitable for high performance and system programming due to its static typing and manual memory management.

See all articles