Python:在实例列表中更改元素位置

时间:2014-01-22 10:47:41

标签: python python-2.7

我有一个由类实例组成的列表:

MyList = [<instance1>, <instance2>, <instance3>]

我想改变第三个元素<instance3>的位置,它现在应该保持在位置index = 1,所以使用以下输出:

MyList = [<instance1>, <instance3>, <instance2>]

我构建了一个有效的简单示例:

a = [1,2]
b = [3,4]
c = [5,6]
d = [a,b,c]

上面的代码为我提供了以下print d输出:

d = [[1, 2], [3, 4], [5, 6]]

我可以使用以下方法交换元素(1)和(2):

d.remove(c)
d.insert(c,1)

它给了我以下输出(这是我想要的那个):

d = [[1, 2], [5, 6], [3, 4]]

但是,当我尝试使用我的实例列表时,我得到以下AttributeError:

AttributeError: entExCar instance has no attribute '__trunc__'

Someoene可以告诉我,如果我在方法中出错了(例如:你不能将这种技术用于实例列表,你应该做“这个或那个”)还是我设置代码的方式?以下脚本是我正在尝试运行的实际代码:

newElement = self.matriceCaracteristiques[kk1]    
self.matriceCaracteristiques.remove(newElement) 
self.matriceCaracteristiques.insert(newElement,nbConditionSortieLong)   

提前致谢。

编辑:更多细节

entExCar是正在进行实例化的类 self.matriceCaracteristiques是我想要操作的列表 newElement是我想从其原始位置(kk1)移除并放回新位置(nbConditionSortieLong)的元素。

3 个答案:

答案 0 :(得分:2)

首先,我没有得到你提到的错误 其次,您似乎在使用insert时犯了错误,应该是insert(1, c)而不是insert(c, 1),请参阅docs

>>> d = [[1, 2], [5, 6], [3, 4]]
>>> c = d[1]
>>> d.remove(c)
>>> d
[[1, 2], [3, 4]]
>>> d.insert(c, 1)
Traceback (most recent call last):
  File "<pyshell#16>", line 1, in <module>
    d.insert(c, 1)
TypeError: 'list' object cannot be interpreted as an integer
>>> d.insert(1, c)
>>> d
[[1, 2], [5, 6], [3, 4]]

答案 1 :(得分:0)

MyList.insert(index_to_insert,MyList.pop(index_to_remove))

答案 2 :(得分:-2)

values[0], values[1] = values[1], values[0]

这对我来说很好。