我应该使用列表理解还是for循环?

时间:2017-10-10 23:12:19

标签: python-3.x list list-comprehension

几个星期前,我了解了列表理解,从那时起我就一直在使用它们。事实上,自从我学习了列表推导以来,我没有改变或构建一个列表,我想知道这是否是一个问题。我对列表理解有一些顾虑......

  1. 首先,它们更快吗?
  2. 其次,它们是否更快,在处理列表时是否有使用for循环的情况。
  3. 例如,我需要创建一个只包含特定数字的特定列表。我很难解释为什么在我正在创建的列表中允许某些数字,所以我不会解释它,因为它并不重要。

    对于这段代码,我将介绍我解决它的两种方法,我想知道哪种方法更快,更“Pythonic”解决方案,我也想知道是否有更好的方法来解决这个问题。

    解决方案1:

    coordinateShell = [0, 1, 2, 3, 16, 17, 18, 19]
    outerShell = [(xCoordinate, yCoordinate) for xCoordinate in range(20) for yCoordinate in range(20)
                  if xCoordinate in coordinateShell or yCoordinate in coordinateShell]
    

    解决方案2:

    coordinateShell = [0, 1, 2, 3, 16, 17, 18, 19]
    outerShell = []
    for xCoordinate in range(20):
        for yCoordinate in range(20):
            if xCoordinate in coordinateShell or yCoordinate in coordinateShell:
                outerShell.append((xCoordinate, yCoordinate))
    

    感谢您的帮助!非常感谢。

1 个答案:

答案 0 :(得分:0)

1.list理解将永远更快

2。如果您的列表中只有某些数字,并且您知道这些数字,那么查找表是进行进一步操作的最快方法