2014-03-29 72 views
0

如果我想创建一个函数来修改lst,使得pos处的元素替换为item,那么这个函数会是什么。没有内置功能Python def替换

例如:

>>> def replace(lst, pos, item): 
...  mylist = [1,2,3] 
... 
>>> replace(mylist, 2, 'a') 
>>> mylist 
[1, 2, 'a'] 

我只是好奇

+0

是否'LST [POS] = item'算作一个内置在功能? –

+0

@tobias nope那不是内置的 – user3357920

+0

@thefourtheye我认为不是 – vaultah

回答

2

你好像路过mylist到方法初始化mylist之前。然后,在方法中创建一个mylist,完全忽略作为参数传递的列表。相反,你如下应该这样做:

def replace(lst, pos, item): 
    lst[pos] = item 

>>> mylist = [1,2,3] 
>>> replace(mylist, 2, 'a') 
>>> mylist 
[1, 2, 'a'] 
1

operator.setitem是你在找什么。

import operator 
mylist = [1,2,3] 
operator.setitem(mylist, 2, 'a') 
mylist 
=> [1, 2, 'a'] 

如@tobias_k所指出的,这等同于(更加显式的,更具有可读性,更Python)普通产品指派:mylist[2] = 'a'