交换列表中两元素 | python | python 技术论坛-金年会app官方网
lst = [1,2,3,4,5,6,7,8,9,10]
tmp = 8
tmp_index = lst.index(tmp)
lst[0], lst[tmp_index] = lst[tmp_index], lst[0]
print(lst) # [8,2,3,4,5,6,7,1,9,10]
lst[0], lst[lst.index(tmp)] = lst[lst.index(tmp)], lst[0]
print(lst) # [1,2,3,4,5,6,7,8,9,10]
这是因为在赋值时,右边的表达式先于左边的表达式进行计算,参考: .
因此,方法二就相当于
lst[0], lst[lst.index(tmp)] = 8, 1
, 这就意味着列表第一个元素变为8,但此时在对左边第二个表达式进行求值时,index方法取的是列表中第一个8所在的位置,因此lst.index(tmp)
此时为0,所以lst[0]=1
,这就意味着列表第一个元素又变回了1。可以通过设置index的第二参数来验证:而第一种方法,因为明确了
tmp_index
为7,所以lst[0], lst[tmp_index] = lst[tmp_index], lst[0]
可以正常交换。