列表推导式应用

版权声明: https://blog.csdn.net/u011286584/article/details/82791990

定期整理点滴,完善自己,今后给洋哥挣钱,带她过好生活,陪伴着让我的小宝贝发自内心爱上笑,加油吧

这里写图片描述

列表推导式提供从序列创建列表的简单途径,e.g.,

list = [2, 3, 4]
print([3 * a for a in list])

输出结果:

[6, 9, 12]

改变输出的格式

print([[a, a * 3] for a in list])

输出结果:

[[2, 4], [3, 9], [4, 12]]

也可以辅助 if 语句用作过滤器:

print([3 * a for a in list if a > 1])
print([3 * a for a in list if a > 3])
print([3 * a for a in list if a < 2])

输出结果:

[6, 9, 12]
[12]
[]

也可以逐个调用某个方法:

print('   .tab'.strip())
freshfruit = [' banana', ' loganberry', ' passion fruit']
print([weapon.strip() for weapon in freshfruit])

输出结果:

‘tab’
[‘banana’, ‘loganberry’, ‘passion fruit’]

嵌套调用:

m = [2, 4, 6]
n = [4, 3, 9]
print([a + b for a in m for b in n])
print([a * b for a in m for b in n])
print([m[i] + n[i] for i in range(len(n))])
print([str(round(355 / 133, i)) for i in range(1, 6)])

其中 round() 按四舍五入返回指定的小数位数
输出结果:

[6, 5, 11, 8, 7, 13, 10, 9, 15]
[8, 6, 18, 16, 12, 36, 24, 18, 54]
[6, 7, 15]
[‘3.1’, ‘3.14’, ‘3.142’, ‘3.1416’, ‘3.14159’]

嵌套列表:
定义 3 × \times 4 矩阵 matrix

matrix = [
    [1,  2,  3,  4],
    [5,  6,  7,  8],
    [10, 11, 12, 13]
]

要将 3 × \times 4 矩阵转换为 4 × \times 3矩阵可以

print([[row[i] for row in matrix] for i in range(4)])

输出结果:

[[1, 5, 10], [2, 6, 11], [3, 7, 12], [4, 8, 13]]

这种简化方法等价于:

transposed = []
for i in range(4):
    transposed.append([row[i] for row in matrix])
print(transposed)

也等价于:

transposed = []
for i in range(4):
    transposed_rows = []
    for row in matrix:
        transposed_rows.append(row[i])
    transposeds.append(transposed_rows)
print(transposed)

输出结果完全一样,可以看出列表推导式能够简化书写代码,让程序整体更简洁

复习嵌套:
写一个生成 m × n m \times n 大小矩阵

form random import randint

def mkmatrix(m, n):
    return [[randint(1, 100) for i in range(n)] for i in range(m)]

>or

def mkrandlist(start, stop, length):
    if length >= 0:
        length = int(length)
    else:
        return -1
    start, stop = (int(start), int(stop)) if start <= stop else (int(stop), int(start))
    randint_list = []
    for i in range(length):
        randint_list.append(None)
        randint_list[i] = randint(start, stop)
    return randint_list

def mkmatrix(m, n):
    return [mkrandlist(1, 100, n) for i in range(m)]

编写的 mkrandlist() 方法值得回味
今天是个特殊的日子,每一天都要快乐,有我们的快乐时代呀
2018.09.20 于广州

猜你喜欢

转载自blog.csdn.net/u011286584/article/details/82791990