当前位置:  开发笔记 > 编程语言 > 正文

Python list.remove()不起作用

如何解决《Pythonlist.remove()不起作用》经验,为你挑选了1个好方法。

我使用import命令包含一个python文件commands.py

该文件如下:

import datetime

def what_time_is_it():
    today = datetime.date.today()
    return(str(today))

def list_commands():
    all_commands = ('list_commands', 'what time is it')
    return(all_commands)

我想主脚本列出commands.py中的函数,所以我用dir(commands)它来输出:

['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'datetime', 'list_commands', 'what_time_is_it']

然后我尝试使用正则表达式删除包含'__'的项目,如下所示:

commands_list = dir(commands)
for com in commands_list:
   if re.match('__.+__', com):
      commands_list.remove(com)
   else:
      pass

这不起作用.如果我尝试在没有for循环或正则表达式的情况下执行此操作,它声称该条目(我刚刚从print(list)复制和粘贴的条目不在列表中.

作为次要问题,我可以让dir只列出函数,而不是'datetime'吗?



1> Francisco Co..:

在迭代时不能修改列表,而是使用列表推导:

commands_list = dir(commands)
commands_list = [com for com in commands_list if not re.match('__.+__', com)]

作为第二个问题,您可以使用callable检查变量是否可调用.

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有