我是靠谱客的博主 美满海燕,最近开发中收集的这篇文章主要介绍[python入门学习]9、列表推导式1、基本语法及应用:2、列表推导式与循环的区别:3、列表推导式的应用:4、有if分句的列表推导式5、嵌套的列表推导式:6、列表推导式终极语法:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、基本语法及应用:

1、列表推导式是在列表中进行的,要使用方括号[]

2、列表推导式是使用一组数据来填充列表的,因此需要用for...in...

3、需要对原数据进行处理,因此需要有expression

基本语法如下:

[expression for target in iterable]

例如:

x = [i for i in range(10)]
x
#结果为[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
y = [i*5 for i in x]
y
#结果为[0, 5, 10, 15, 20, 25, 30, 35, 40, 45]

上述代码相当于:

x = []
for i in range(10):
    x.append(i)
#x
#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]


for i in range(len(x)):
    y[i] = x[i] * 5
#y
#[0, 5, 10, 15, 20, 25, 30, 35, 40, 45]

也可以对字符串进行处理:

y = [c*3 for c in 'abcdefg']
y
#['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff', 'ggg']

提取矩阵中某列元素:

mm = [[1,2,3],
      [4,5,6],
      [7,8,9]]
a = [row[1] for row in mm]#第二列

提取矩阵中对角线元素:

mm = [[1,2,3],
      [4,5,6],
      [7,8,9]]
c = [mm[i][i] for i in range(len(mm))]

提取矩阵中反对角线元素:

mm = [[1,2,3],
      [4,5,6],
      [7,8,9]]
c = [mm[i][len(mm)-i-1] for i in range(len(mm))]

注:反对角线元素提取中,列一定要有-1,否则会报错:在i = 0时,超出列表范围

c = [mm[i][len(mm)-i] for i in range(len(mm))]

Traceback (most recent call last):
  File "<pyshell#49>", line 1, in <module>
    c = [mm[i][len(mm)-i] for i in range(len(mm))]
  File "<pyshell#49>", line 1, in <listcomp>
    c = [mm[i][len(mm)-i] for i in range(len(mm))]
IndexError: list index out of range

2、列表推导式与循环的区别:

循环是通过迭代逐个修改原列表中元素

列表推导式是直接创建一个新列表,然后赋值为原来的变量名

3、列表推导式的应用:

利用列表推导式创建一个3*3的矩阵

m = [[0]*3 for i in range(3)]
m
#[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
m[1][1] = 100
m
#[[0, 0, 0], [0, 100, 0], [0, 0, 0]]

4、有if分句的列表推导式

[expression for target in iterable if condition]

例:筛选偶数(被2整除):

even = [i for i in range(10) if i%2 == 0]
even
#[0, 2, 4, 6, 8]

执行顺序:先执行for语句,然后执行if语句,最后执行表达式

例:筛选b开头的字符串

words = ['aaa','bbb','ccc','ddd','eee']
bwords = [w for w in words if w[0] == 'b']
bwords
#['bbb']

5、嵌套的列表推导式:

[expression for target1 in iterable1

                   for  target2 in iterable2

                   for  target3 in iterable3

....               for  targetn in iterablen]

例:将二维列表降阶为一维列表

col为列,row为行

m = [[1,2,3],[4,5,6],[7,8,9]]
a = [col for row in m for col in row]
a
[1, 2, 3, 4, 5, 6, 7, 8, 9]

等同于循环如下:

flatten = []
for row in m:
    for col in row:
        flatten.append(col)

#flatten
#[1, 2, 3, 4, 5, 6, 7, 8, 9]

也就是外层循环放在列表推导式前面,内层(嵌套循环)放在后面。

例:字符串

[x+y for x in 'abcdefg'for y in 'ABCDEFG']
#['aA', 'aB', 'aC', 'aD', 'aE', 'aF', 'aG', 'bA', 'bB', 'bC', 'bD', 'bE', 'bF', 'bG', 'cA', 'cB', 'cC', 'cD', 'cE', 'cF', 'cG', 'dA', 'dB', 'dC', 'dD', 'dE', 'dF', 'dG', 'eA', 'eB', 'eC', 'eD', 'eE', 'eF', 'eG', 'fA', 'fB', 'fC', 'fD', 'fE', 'fF', 'fG', 'gA', 'gB', 'gC', 'gD', 'gE', 'gF', 'gG']

用循环体可得:

_ = []#表示临时变量
for x in 'abcdefg':
    for y in 'ABCDEFG':
        _.append(x+y)

6、列表推导式终极语法:

[expression for target1 in iterable1 if condition1

                   for  target2 in iterable2 if condition2

                   for  target3 in iterable3 if condition3

....               for  targetn in iterablen if conditionn]

例如:

a = [[x,y] for x in range(11) if x%3 == 0 for y in range(20) if y%5 == 1]
a
#[[0, 1], [0, 6], [0, 11], [0, 16], [3, 1], [3, 6], [3, 11], [3, 16], [6, 1], [6, 6], [6, 11], [6, 16], [9, 1], [9, 6], [9, 11], [9, 16]]

最后

以上就是美满海燕为你收集整理的[python入门学习]9、列表推导式1、基本语法及应用:2、列表推导式与循环的区别:3、列表推导式的应用:4、有if分句的列表推导式5、嵌套的列表推导式:6、列表推导式终极语法:的全部内容,希望文章能够帮你解决[python入门学习]9、列表推导式1、基本语法及应用:2、列表推导式与循环的区别:3、列表推导式的应用:4、有if分句的列表推导式5、嵌套的列表推导式:6、列表推导式终极语法:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(79)

评论列表共有 0 条评论

立即
投稿
返回
顶部