【问题标题】:How to assign a list into an another list in python如何将一个列表分配给python中的另一个列表
【发布时间】:2017-04-01 12:07:57
【问题描述】:
num = 8
order = []
p = 0

for i in range(num):
    for t in range(i+1 , num):
        order[p] = [i,t]
        p += 1

我想设置一些数据,例如 [0,0] , [0,1] ... [2,6] , [2,7] , [3,4] , [3,5] , [3 ,6] , [3,7] , [4,5] ... [6,7] 到一个列表中,给出了这个错误: IndexError: list assignment index out of range,我该如何解决这个问题?

【问题讨论】:

  • 使用列表理解[[i,j] for i in range(7) for j in range(7)]
  • 看起来您希望列表的最后一个元素是[7, 7] 而不是[6, 6]?此外,甚至不清楚您是否想要成对的相同数字:[0, 0] 出现但 [3, 3] 没有。

标签: python arrays list


【解决方案1】:

您可以使用append()方法添加项目

order.append([i,t])

或者使用列表推导

print [[i,t] for i in range(num) for t in range(i+1 , num)]

【讨论】:

    【解决方案2】:

    你不能用 order[p] 声明一个列表项,因为在这种情况下 p 是一个列表索引。如果您希望能够通过 p 引用它们,您可能想要的是一个 dict。 否则,使用追加。

    字典方法:

    num = 8
    order = {}
    p = 0
    
    for i in range(num):
        for t in range(i+1 , num):
            order[p] = [i,t]
            p += 1
    
    >>> order
    {0: [0, 1], 1: [0, 2], 2: [0, 3], 3: [0, 4], 4: [0, 5], 5: [0, 6], 6: [0, 7], 7: [1, 2], 8: [1, 3], 9: [1, 4], 10: [1, 5], 11: [1, 6], 12: [1, 7], 13: [2, 3], 14: [2, 4], 15: [2, 5], 16: [2, 6], 17: [2, 7], 18: [3, 4], 19: [3, 5], 20: [3, 6], 21: [3, 7], 22: [4, 5], 23: [4, 6], 24: [4, 7], 25: [5, 6], 26: [5, 7], 27: [6, 7]}
    >>> order[4]
    [0, 5]
    

    列表追加方法:

    num = 8
    order = []
    p = 0
    
    for i in range(num):
        for t in range(i+1 , num):
            order.append([i,t])
            p += 1
    
    >>> order
    [[0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [3, 4], [3, 5], [3, 6], [3, 7], [4, 5], [4, 6], [4, 7], [5, 6], [5, 7], [6, 7]]
    >>> order[4]
    [0, 5]
    

    【讨论】:

      【解决方案3】:

      您应该研究 Python 列表推导。你想要的可以通过

      num = 8
      order = [[i, t] for t in range(i+1, num) for i in range(num)]
      

      您得到的错误是因为您初始化了一个空列表 (order=[]),然后尝试访问该列表 order[p] = [i,t] 的元素。如果要逐步建立列表,请使用 Python 列表的append 方法。

      【讨论】:

        猜你喜欢
        • 2012-06-24
        • 1970-01-01
        • 2017-07-11
        • 2020-06-22
        • 2021-06-22
        • 2017-10-29
        • 1970-01-01
        • 2018-04-03
        • 2019-08-31
        相关资源
        最近更新 更多