【问题标题】:When trying to put a range of numbers in to two lists, the second list comes out empty [duplicate]当尝试将一系列数字放入两个列表时,第二个列表为空 [重复]
【发布时间】:2019-10-16 16:54:22
【问题描述】:

我有两个变量 n1 和 n2,它们给出一个范围内的随机数,并且总是 n1

我想列两个清单:

第一个列表,其中所有 n1 和 n2 的值都按升序排列
第二个列表,所有 n2 和 n1 的值都按降序排列

所以我就这样尝试

Li1 = list(range(n1,n2))
Li2 = list(range(n2,n1))

但我得到的是:

Li1: [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
Li2: []

第二个列表总是空的。但它假设像 Li1 但按降序排列

【问题讨论】:

    标签: python list


    【解决方案1】:

    您需要指定范围的步长。默认为 1,您正在寻找 -1。正 int 向上计数,而您尝试向下计数。

    Li2 = list(range(n2,n1, -1))
    

    在您在这里提问之前,请参阅docssearch 以了解问题,因为可能已经有人问过了,或者文档已经有很好的解释。

    【讨论】:

      【解决方案2】:

      你应该添加 -1 作为 range() 函数的第三个参数

      代码:

      n1 = 10
      n2 = 30
      
      print(list(range(n1, n2)))
      print(list(range(n2 - 1, n1 - 1, -1)))
      

      你会得到什么:

      [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
      [29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10]
      

      【讨论】:

        【解决方案3】:

        您还可以通过以下方式反转 Li1:

        Li2 = Li1[::-1]
        

        这不是最快的解决方案。但我认为这是一个有用的技巧。

        【讨论】:

          【解决方案4】:

          要在列表中包含“n2”:

          Li1 = list(range(n1,n2+1))
          

          和:

          Li2 = list(reversed(Li1))
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2022-12-24
            • 1970-01-01
            • 1970-01-01
            • 2014-05-16
            • 1970-01-01
            • 2013-04-15
            • 1970-01-01
            • 2022-01-07
            相关资源
            最近更新 更多