使用isdigit()字符串方法时出现错误

时间:2018-08-05 20:43:49

标签: python arrays string

不是超级有经验的人,但是在使用isdigit()方法时遇到了一个错误。

我正在尝试浏览列表并删除所有非数字,但是我的最终列表一直在给我一些字母。不知道这是一个错误还是我做错了。

这是我当前的python:

Python 3.6.1 (v3.6.1:69c0db5050, Mar 21 2017, 01:21:04) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin

我的代码:

>>> test
['b', 'd', 'f', 'h', 'j', 'l', 'x', '2']
>>> for i in test:
if not i.isdigit():
    print(i, "should not be a digit")
    test.remove(i)


b should not be a digit
f should not be a digit
j should not be a digit
x should not be a digit
>>> test
['d', 'h', 'l', '2']

在这里,我希望最终列表中只有2个。 我做错了吗?

2 个答案:

答案 0 :(得分:2)

如果您想过滤掉isdigit测试:

test = list(filter( lambda x : x.isdigit(), test))

如在评论中删除元素中所述,迭代时是不好的做法。

答案 1 :(得分:0)

当您第一次遍历列表时,它将使用第一项b。现在,for循环期望第二个值,但是,由于您删除了b,因此d现在是第一个,f是第二个。这样,d被忽略,这就是为什么它在最终结果中。试试这个:

test = [i for i in test if not i.isdigit()]
for i in test:
    print(i, 'must be a digit')

适应您的需求