list.remove在python中 - 无法识别命令

时间:2013-11-27 20:50:04

标签: python list removeall

我有一个名为“comms_chairs”的python列表,其结构如下:

[['  Chairwoman Debbie Stabenow ', 'Agriculture:'], ['  Chairman Tim Johnson' ',' 'Banking'], ['  Chairman Jay Rockefeller ', 'Commerce:'], ['  Chairman Jeff Bingaman', 'Energy:']

当我输入comms_chairs [0]时,我得到(正如预期的那样)

['  Chairwoman Debbie Stabenow ', 'Agriculture:']

但是,当我尝试从列表中删除字符串“Chairwoman”时,以下操作失败:

>>> type(comms_chairs[0])
<type 'list'>
>>> comms_chairs[0].remove(' Chairwoman')
Traceback (most recent call last):
 File "<pyshell#104>", line 1, in <module>
   comms_chairs[0].remove(' Chairwoman')
ValueError: list.remove(x): x not in list

当我没有在Chairwoman之前放置空格时,同样的问题。这里发生了什么?我确信Chairwoman位于comms_chairs[0]。我的总体目标是删除所有Chairwoman和“主席”字符串,但了解列表中的内容通常可能是有益的。如果不是很明显,我是Python的新手。

3 个答案:

答案 0 :(得分:1)

' Chairwoman'不在comms_chairs[0]中。它是comms_chairs[0][0]的子字符串,但它不是comms_chairs[0]的元素。您遇到的问题类似于您只是尝试comms_chairs.remove(' Chairwoman')时会遇到的问题。

要解决此问题,请使用列表推导过滤掉包含' Chairwoman'的字符串,创建新列表,或者对字符串进行迭代(以相反的顺序进行迭代,因此删除它们不会弄乱迭代)并删除每个字符串包含' Chairwoman'

答案 1 :(得分:1)

这适用于第一个。

 b[0][0].replace(' Chairwoman ','')

comms_chairs [0]返回一个列表,因此您需要将其编入索引。

Soo ....字符串也是不可变的。意思是如果你想让b [0] [0]等于结果,你必须像这样分配它:

 b[0][0]=b[0][0].replace(' Chairwoman ','')

答案 2 :(得分:0)

写这个

comms_chairs[0].remove('  Chairwoman Debbie Stabenow ')

另请注意,您在开头和结尾都有一些空格。