2017-04-01 47 views
0
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:列表赋值索引超出范围,我该如何解决这个问题?如何将列表分配到python中的另一个列表中

+0

在范围(7)中使用列表理解'[[i,j]为范围(7)中的j]' –

+0

看起来您希望列表的最后一个元素是'[7,7] '而不是'[6,6]'?而且,如果你想要成对的相同数字还不是很清楚:'[0,0]'出现,但'[3,3]'不出现。 – fuglede

回答

0

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

order.append([i,t]) 

或者用一个列表理解

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

你不能为了[P]申报清单的项目,因为p在这种情况下是一个列表指数。你可能想要的是一个字典,如果你想能够引用他们的p。 否则,使用append。

快译通方法:

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] 

列表append方法:

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] 
0

你应该看看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方法。

相关问题