>>> from numbers import Real
>>> lst = ['hello', 1, 2, 3, 4, 'goodbye', 'help']
>>> [element for element in lst if isinstance(element, Real)]
[1, 2, 3, 4]
字符串 或
>>> [element for element in lst if isinstance(element, int)]
[1, 2, 3, 4]
型 或
>>> [element for element in lst if not isinstance(element, str)]
[1, 2, 3, 4]
5条答案
按热度按时间iqjalb3h1#
你需要使用
isinstance
来过滤掉那些字符串元素。也不要命名你的变量list
,它会隐藏内置的list
字符串
或
型
或
型
vohkndzv2#
你可以使用
isinstance
来实现这一点,但与user 3100115的其他答案不同,我会 * 将你不想要的类型列入黑名单 *,而不是只将少数类型列入白名单。不确定哪种类型更适合你的特殊情况,只是添加它作为替代方案。它也可以在没有任何导入的情况下工作。字符串
除了列表解析,你也可以使用
filter
内置函数。它返回一个生成器,所以要直接打印它,你必须先把它转换成列表。但是如果你要重写它,(例如使用for
-环),不要转换它,它会更快,消耗更少的内存,由于“懒惰的评估”。如果将方括号替换为圆括号,则可以在上面的示例中实现相同的效果。型
pkln4tw63#
要么使用列表解析作为@user3100115,要么使用“lisp/lambda方法”
字符串
顺便说一下,不要将变量命名为
list
,它已经是一个Python函数了。:)7kqas0il4#
还有一个解决方案:D
字符串
quhf5bfb5#
我的方法是:
字符串
这将是类似于这样写出来(但更快):
型
我将你的“list”重命名为“values”,因为
list
已经存在于python中,它是list类型的类名。