如何从python中的列表中删除项目并用新项目替换它们?

时间:2015-01-17 01:18:03

标签: python list

我在使用其他列表替换完整列表时遇到问题。 例如,我们说我有一个包含单词['han','san']的列表; 如何在[1,2]发送其值以替换该列表中的hansan的其他列表?

i = [1,2]

p = ['han', 'san']

我希望将hansan替换为12

3 个答案:

答案 0 :(得分:1)

In [1]: i = [1,2]

In [2]: p = ['han', 'san']

In [3]: i[:] = p # replace all content of i with content of p

In [4]: i
Out[4]: ['han', 'san']

如果您有更长的列表,并且只想更换前两个:

In [5]: i = [1,2,3,4]

In [6]: p = ['han', 'san']

In [7]: i[:2] = p # replace just first two elements with contents of p

In [8]: i
Out[8]: ['han', 'san', 3, 4]

i[:]语法选择整个列表,因此i[:] = p会将p中的每个元素添加到i,如果您使用了i = p i将是对p的引用,因此p中的任何更改都会在i中反映为i is p,它们都指向内存中的同一对象。

使用i[:2]我们只选择i较长版本的前两个元素,并将它们设置为p的内容,如果p有十个元素我们会向i添加十个元素。使用[:]语法进行分配时,右侧必须始终是可迭代的。

In [9]: id(i)
Out[9]: 140380204622192    
In [10]: i[:] = p                        
In [11]: id(i) # still same object
Out[11]: 140380204622192    
In [12]: i = p    
In [13]: id(i) # now i is p
Out[13]: 140380204431624    
In [14]: id(p)
Out[14]: 140380204431624   

答案 1 :(得分:0)

map(lambda x:p[x-1],i)

是一种方式

答案 2 :(得分:0)

使用如下操作:

p = d

适用于您的示例,但它会将一个列表替换为另一个列表,而不是将每个项目替换为另一个列表的项目。您可以尝试前面提到的Joran Beasley的方法:

map(lambda x: p[x - 1], i)

或者你可以定义一个函数:

def replace_list(old_list, new_list):
    for x in range(len(old_list)):
        old_list[x] = new_list[x]

正如您所看到的,有多种方法可以替换列表中的项目,您的选择实际上取决于您的程序。希望这有帮助!