Home >Backend Development >Python Tutorial >Inventory of three methods of Python list generation

Inventory of three methods of Python list generation

Go语言进阶学习
Go语言进阶学习forward
2023-07-25 16:54:124124browse

1. Preface

List Comprehensions are Python’s built-in very simple but powerful generation that can be used to create lists.


2. Case analysis

Three methods

To generate list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], you can use list(range(1, 11)).

print(list(range(1, 11)))

Inventory of three methods of Python list generation

#What to do if you want to generate [1x1, 2x2, 3x3, …, 10x10]?

1. Method one is looping:
L = []
for x in range(1, 11):
    L.append(x * x)
print(L)

But looping is too cumbersome, and list generation can be used One line of statements replaces the loop to generate the above list:

print([x * x for x in range(1, 11)])

Inventory of three methods of Python list generation

写列表生成式时,把要生成的元素x * x放到前面,后面跟for循环,就可以把list创建出来,十分有用,多写几次,很快就可以熟悉这种语法。

for循环后面还可以加上if判断,这样就可以筛选出仅偶数的平方:

for x in range(1, 11):
    L.append(x * x)


print([x * x for x in range(1, 11) if x % 2 == 0])

Inventory of three methods of Python list generation

2. 使用两层循环,可以生成全排列
L = []
for x in range(1, 11):
    L.append(x * x)


print( [m + n for m in 'ABC' for n in 'XYZ'])

Inventory of three methods of Python list generation

三层和三层以上的循环就很少用到了。

3. 运用列表生成式,可以写出非常简洁的代码。

例如,列出当前目录下的所有文件和目录名,可以通过一行代码实现:

import os  # 导入os模块,模块的概念后面讲到


print([d for d in os.listdir('.')])  # os.listdir可以列出文件和目录

Inventory of three methods of Python list generation

for循环其实可以同时使用两个甚至多个变量,s比如dict的items()可以同时迭代key和value:

d = {'x': 'A', 'y': 'B', 'z': 'C'}
for k, v in d.items():
    print(k, '=', v)

Inventory of three methods of Python list generation

因此,列表生成式也可以使用两个变量来生成list:

d = {'x': 'A', 'y': 'B', 'z': 'C' }
print([k + '=' + v for k, v in d.items()]

Inventory of three methods of Python list generation

最后把一个list中所有的字符串变成小写:

L = ['Hello', 'World', 'IBM', 'Apple']
print([s.lower() for s in L])

Inventory of three methods of Python list generation

如果list中既包含字符串,又包含整数,由于非字符串类型没有lower()方法,所以列表生成式会报错:

L = ['Hello', 'World', 18, 'Apple', None]
print([s.lower() for s in L])

Inventory of three methods of Python list generation

使用内建的isinstance函数可以判断一个变量是不是字符串:

x = 'abc'
y = 123
print(isinstance(x, str))


print(isinstance(y, str))

Inventory of three methods of Python list generation


三、练习和思考

请修改列表生成式,通过添加if语句保证列表生成式能正确地执行。

# -*- coding: utf-8 -*-
L1 = ['Hello', 'World', 18, 'Apple', None]
L2=???


# 期待输出: ['hello', 'world', 'apple']
print(L2)

练习参考代码 :

L2 =[s.lower() for s in L1 if isinstance(s, str) ]

运行结果:

Inventory of three methods of Python list generation

注:

Using list generation, you can quickly generate a list, and you can derive another list from one list, but the code is very concise.

4. Summary

This article is based on the basics of Python and introduces list generation, focusing on cases and explaining three methods.

Analyze different methods to achieve the same effect. Points that need attention and difficulties encountered in actual cases are provided, and effective solutions are provided. Finally, through practice and thinking, you can deepen your understanding of list generation.

The above is the detailed content of Inventory of three methods of Python list generation. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:Go语言进阶学习. If there is any infringement, please contact admin@php.cn delete