lsit production (list production)

1. How to create a list

After our previous study, we all know how to create a list, but in some cases, it is too troublesome to create a list in the form of assignment, especially It is a regular list. It is too troublesome to write one by one and assign values ​​one by one. For example, you want to generate a list with 30 elements, and the elements inside are 1 - 30. We can write like this:

# -*- coding: UTF-8 -*-
list1=list ( range (1,31) )
print(list1)

Output result:

[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]

This has actually been mentioned before: For example, there is an example of printing the multiplication table. This method only requires a few sentences. The code is enough. For details, please refer to the previous chapter: Comprehensive Example of Conditional Statements and Loop Statements

However, if you use the list generation formula, you can generate the multiplication table in one line of code. Look at the code specifically:

print('\n'.join([' '.join ('%dx%d=%2d' % (x,y,x*y)  for x in range(1,y+1)) for y in range(1,10)]))

The final output result:

1x1= 1
1x2= 2 2x2= 4
1x3= 3 2x3= 6 3x3= 9
1x4= 4 2x4= 8 3x4=12 4x4=16
1x5= 5 2x5=10 3x5=15 4x5=20 5x5=25
1x6= 6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7= 7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8= 8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9= 9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81

However, here we first need to understand how to create a list generation

2. List generation Create

First, the syntax of the lsit generation is:

[expr for iter_var in iterable] 
[expr for iter_var in iterable if cond_expr]

The first syntax: first iterate all the contents in iterable, and for each iteration, put the corresponding contents in iterable into iter_var, then apply the contents of the iter_var in the expression, and finally use the calculated value of the expression to generate a list.

The second syntax: a judgment statement is added. Only the content that meets the conditions is put into iterable and the corresponding content is put into iter_var, and then the content of the iter_var is applied in the expression, and finally the calculated value of the expression is used Generate a list.

In fact, it is not difficult to understand, because it is a list generation, so it must be enclosed by [], and then the statement inside puts the element to be generated in the front, followed by a for loop statement or for loop. statements and judgment statements.

Example:

# -*- coding: UTF-8 -*-
lsit1=[x * x for x in range(1, 11)]
print(lsit1)

Output result:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

As you can see, just put the element x * x to be generated in the front, followed by a for loop. Create the list. So what about the form of if after the for loop? How to understand:

# -*- coding: UTF-8 -*-
lsit1= [x * x for x in range(1, 11) if x % 2 == 0]
print(lsit1)

The output result:

[4, 16, 36, 64, 100]

This example is to find the square root of an even number from 1 to 10. As mentioned above, x * x is the element to be generated, The latter part is actually an if judgment statement nested in the for loop.

So with this knowledge, we can also guess that there are also for loops nested inside the for loop. Specific example:

# -*- coding: UTF-8 -*-
lsit1= [(x+1,y+1) for x in range(3) for y in range(5)] 
print(lsit1)

Output result:

[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5)]

In fact, it is not difficult to understand this thing if you know how the list generation formula is combined. Because the list generation just combines the previously learned knowledge points and replaces it with a more concise way of writing.

Continuing Learning
||
submitReset Code