【问题标题】:Python remove all numbers from a listPython从列表中删除所有数字
【发布时间】:2017-05-07 22:50:57
【问题描述】:

我有一个 unicode 元素列表,我正在尝试从中删除所有整数。 我的代码是:

List = [u'123', u'hello', u'zara', u'45.3', u'pluto']

for el in List:
   if isinistance(el, int):
      List.remove(el)

代码不起作用,它给了我与 u'123' 包含的相同列表。 我需要的是这个:

List = [ u'hello', u'zara', u'45.3', u'pluto']

谁能帮帮我?

【问题讨论】:

    标签: python-2.7 list int


    【解决方案1】:

    您的列表由 unicode 字符串组成,这些字符串显然不是 int 的实例。您可以尝试在辅助函数中将它们转换为int,并将其用作删除它们/构造新列表的条件。

    def repr_int(s):
        try: 
            int(s)
            return True
        except ValueError:
            return False
    
    original_list = [u'123', u'hello', u'zara', u'45.3', u'pluto']
    
    list_with_removed_ints = [elem for elem in original_list if not repr_int(elem)]
    

    【讨论】:

    • 你可以直接list_with_removed = filter(repr_int, original_list)
    • 是的,当然!一些风格指南不鼓励使用这种函数式风格,而是鼓励使用列表推导式。由于我确实喜欢 Haskell,filter 也是我的选择,但我会尽可能地遵守样式指南。
    猜你喜欢
    • 2016-08-26
    • 1970-01-01
    • 2019-08-02
    • 1970-01-01
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多