美文网首页
Python基础错误3

Python基础错误3

作者: goodAndBad | 来源:发表于2017-11-10 17:38 被阅读0次

    列表推导式

    菜鸟教程曰:
    列表推导式提供了从序列创建列表的简单途径。通常应用程序将一些操作应用于某个序列的每个元素,用其获得的结果作为生成新列表的元素,或者根据确定的判定条件创建子序列。
    每个列表推导式都在 for 之后跟一个表达式,然后有零到多个 for 或 if 子句。返回结果是一个根据表达从其后的 for 和 if 上下文环境中生成出来的列表。
    eg.

    >>> vec = [2, 4, 6]
    >>> [3*x for x in vec]
    [6, 12, 18]
    

    我的错误代码:

    l1 = [1,2,3,4]
    l2 = [5,6,7]
    minLen = lambda i,j:min(i,j)
    print(l1[i]*l2[i] for i in range(minLen(len(l1),len(l2))))
    

    运行结果:

    <generator object <genexpr> at 0x00000077F887C830>

    这段代码大概的意思是,返回一个列表,这个列表是按照顺序把相同index的两个列表的数字相乘,因为两个列表长度不同,所以判断了长度,选择了短的那个。
    打印出这个东西我是很无语的,这个结果让我很懵逼,后来发现是打印的时候忘了加“[]”。。。(打印出来这个我是不知道是什么以及为什么,只是改了错误)

    正确代码:

    l1 = [1,2,3,4]
    l2 = [5,6,7]
    minLen = lambda i,j:min(i,j)
    print([l1[i]*l2[i] for i in range(minLen(len(l1),len(l2)))])
    

    还是没有习惯Python

    相关文章

      网友评论

          本文标题:Python基础错误3

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