美文网首页
python - 简单算法题 - 生成矩阵

python - 简单算法题 - 生成矩阵

作者: Gaafung峰 | 来源:发表于2020-07-22 09:49 被阅读0次

题目要求

已知两个列表

lst_1 = [1, 2, 3, 4]
lst_2 = ['a', 'b', 'c', 'd']

请写算法,将两个列表交叉相乘,生成如下的矩阵

[['1a', '2a', '3a', '4a'],
 ['1b', '2b', '3b', '4b'],
 ['1c', '2c', '3c', '4c'],
 ['1d', '2d', '3d', '4d']]

思路分析

根据观察,矩阵的横列表个数取决于lst_1,竖列表个数取决于lst_2,可以先对lst_2进行for 循环处理,再嵌套一层lst_1的for循环遍历添加列表,最终添加的列表进行追加。

示例代码

import pprint
lst_1 = [1, 2, 3, 4]
lst_2 = ['a', 'b', 'c', 'd']

result_lst = []
for i in lst_2:
    tmp_lst = []
    for j in lst_1:
        value = str(j) + i
        tmp_lst.append(value)
    result_lst.append(tmp_lst)


pprint.pprint(result_lst)

分析时间复杂度

for i in lst_2 遍历n复杂度为4,f(n) = n

for j in lst_1遍历n复杂度为4,但是嵌套在上个列表中,所以复杂度为f(n) = n^2

该算法复杂度为f(n)= n^2

优化思考

从逻辑上必须每个值需要遍历后进行组合,所以并没有优化复杂度的空间。

但是可以利用列表生成式简化代码

[[str(j) + i for j in lst_1] for i in lst_2]
[['1a', '2a', '3a', '4a'],
 ['1b', '2b', '3b', '4b'],
 ['1c', '2c', '3c', '4c'],
 ['1d', '2d', '3d', '4d']]

一次性想写出最简代码是不可能的,先写出能实现功能的代码,再一步步推进推导。

我个人的思路过程:

先实现一个列表生成式

for i in lst_2:
    tmp_lst = [str(j) + i for j in lst_1]
    print(tmp_lst)
    
==============================================
['1a', '2a', '3a', '4a']
['1b', '2b', '3b', '4b']
['1c', '2c', '3c', '4c']
['1d', '2d', '3d', '4d']

再将tmp_lst视作整体,再次嵌套列表生成式

欢迎交流相互学习。

相关文章

  • python - 简单算法题 - 生成矩阵

    题目要求 已知两个列表 请写算法,将两个列表交叉相乘,生成如下的矩阵 思路分析 根据观察,矩阵的横列表个数取决于l...

  • Python3 趣味系列题7(续) ------ A

    前文:Python3 趣味系列题7 ------ Prim算法生成完美迷宫 一、A*算法 寻找路径的算法有很多,例...

  • python简单算法题(二)

    1)求一个矩阵的转置 matrix_before = [[1, 4], [2, 5], [3, 6]] matri...

  • python简单算法题(一)

    1)只能输入整数,并生成列表,实现最大数,将列表从小到大排序。 # define a funtion which ...

  • python与线性代数 生成矩阵【转】

    在python中生成矩阵,需要用到numpy这个库。 numpy库中可以用于生成矩阵的方法有很多中。 包括:arr...

  • 顺时针输出数字矩阵

    Q: 之前朋友跟我聊了道算法题,是顺时针输出数组矩阵,如图1所示: 简单写了下算法,语言无所谓,思路都差不多,我用...

  • 浅析Python中的生成器

    之前简单说过Python中关于迭代器的概念,今天来简单说一下生成器。所谓生成器,字面意思就是按照一定的算法生成一个...

  • CPPYY include 和 load_libraries及动

    CPPYY Part II 动态特性 我们来实现一个简单的KNN算法 总结 cppyy生成的python 类可以...

  • 【算法】打印算法题总结

    前言 本文记录了我对打印算法题的总结。先说说什么事打印算法题,就是按照一定的规则打印二维矩阵。例如:旋转正方形矩阵...

  • 矩阵系列算法题

    1.转圈打印矩阵 【题目】给定一个整型矩阵matrix,请按照转圈的方式打印它。例如:1 2 3 45 6 7 8...

网友评论

      本文标题:python - 简单算法题 - 生成矩阵

      本文链接:https://www.haomeiwen.com/subject/viqzkktx.html