我的代码有什么问题,但我可以得到我期望的结果。
我正试图删除列表中的所有“#”。
funds_是数据列表:
In [3]: funds_U
Out[3]:
[u'#',
u'#',
u'MMFU_U',
u'#',
u'#',
u'AAI_U',
u'TGI_U',
u'JAS_U',
u'TAG_U',
u'#',
u'#',
u'AAT_U',
u'BGR_U',
u'BNE_U',
u'IGE_U',
u'#',
u'#',
u'DGF_U',
u'BHC_U',
u'FCF_U',
u'SHK_U',
u'VCF_U',
u'#',
u'JEM_U',
u'SBR_U',
u'TEM_U',
u'#',
u'#',
u'BAB_U',
u'BGA_U',
u'#']
以下是代码:
In [4]: for fund_U in funds_U[:]:
...: funds_U.remove(u"#")
...:
错误如下:
ValueError Traceback (most recent call last)
<ipython-input-4-9aaa02e32e76> in <module>()
1 for fund_U in funds_U[:]:
----> 2 funds_U.remove(u"#")
3
ValueError: list.remove(x): x not in list
我会这么做:
这是一个list-comprehension。它遍历funds中的每个项,如果不是
u'#'
,则将其添加到新列表中。根据documentation,如果列表中不存在项,
remove()
将抛出错误。现在,您的代码遍历列表中的每个项,并尝试删除那些#
s。由于不是每个项都是#
,当列表用完#
s时,remove()
将抛出错误试试这样的list comprehension:
这将生成一个新列表,该列表由
funds_U
中不是u'#'
的每个元素组成。这将修改原始对象,因此如果有其他变量指向同一对象,则它们的链接将保持不变。
相关问题 更多 >
编程相关推荐