python列表解析—[x for x in list]


定义与说明

列表解析,又叫列表推导式(list comprehension),可以通过对list中每个元素应用一个函数,从而将一个list映射到另一个list。

  • 每一个列表推导式包括在一个 for 语句之后的表达式,零或多个 for 或语句。
  • 返回值是由 fo r或 if 子句之后的表达式得到的元素组成的列表,如果想要得到一个元组,就必须加上括号。

列表解析比 for 更精简(用一行代码代替十几行代码),并且性能更快

基本列表解析

1)x代表一个值

## for循环实现列表解析
list_1=[]
for x in range(5):
	list_1.append(x)
print(list_1)

## 列表解析
**[x for x in range(5)]**    # 返回值是由for子句之后的表达式得到的元素组成的列表

在这里插入图片描述

## for循环实现列表解析
l1_list=[]
for x in l1:
    a=x*2
    l1_list.append(a)
print(l1_list)

## 列表解析
l1 = [1,2,3,4]
[ x*2 for x in l1] 

在这里插入图片描述

2)x代表多个值

tinydict = {
    
    'Google': 'www.google.com', 'Runoob': 'www.runoob.com', 'taobao': 'www.taobao.com'}

## for循环实现列表解析
list_l1=[]
for (key,value) in tinydict.items():
    list_l1.append(key + ':' + str(value))
print(list_l1)

## 列表解析
[ k + ':' + str(v) for (k, v) in tinydict.items()]

在这里插入图片描述

3)两次循环

## for循环实现列表解析
l1_list=[]
l1 = [1,2,3,4]
l2 = [1,2,3,4]
for x in l1:
    for y in l2:
        a=x+y
        l1_list.append(a)
print(l1_list)

## 列表解析
[x+y for x in l1 for y in l2]

在这里插入图片描述

vec = [[1,2,3], [4,5,6], [7,8,9]]

## for循环实现列表解析
list_l1=[]
for elem in vec:
    for num in elem:
         list_l1.append(num)
print(list_l1)

## 列表解析
[num for elem in vec for num in elem]

在这里插入图片描述

4)[fun(x) for x in list] 调用函数

def square(x):    # 计算平方数
    return x ** 2
[square(x) for x in range(1,10)]

在这里插入图片描述

条件列表解析

## for循环嵌套if语句实现列表解析
list_l1=[]
for x in range(10):
    if x%2 == 0:
        list_l1.append(x)
print(list_l1) 

## 列表解析
[ x for x in range(100) if x%2 ==0 ]

在这里插入图片描述

## for循环嵌套if语句实现列表解析
list_l1=[]
for x in [1,2,3]:
	for y in [3,1,4]:
		if x != y:
			list_l1.append((x,y))
			
## 列表解析
[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]

在这里插入图片描述

嵌套列表解析

mat = [ [1, 2, 3],[4, 5, 6], [7, 8, 9]]

## for循环生成矩阵
list_l2=[]
for i in (0,1,2):
    list_l1=[]
    for row in mat:        
        a=row[i]
        list_l1.append(a)
    list_l2.append(list_l1)
print(list_l2)


## 交换行列: 列表推导式生成矩阵
[[row[i] for row in mat] for i in (0,1,2)] 

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sodaloveer/article/details/129588160
x