我正在使用一个代码片段,它迭代对象列表并过滤出对象以执行特定任务.for循环由多个嵌套的if语句组成(将来我可能会添加更多).

这是我的代码:

for obj in objects:
  if 'x' not in obj.name:
    if 'y' not in obj.name:
      if 'z' not in obj.name:
        if obj.length > 0:
          if obj.is_directory == True:
            
            # Do Something

对于这个片段,有没有一个简洁或高效的解决方法?

请告知

推荐答案

你也可以写:

for obj in objects:
   if not any(c in obj.name for c in 'xyz') and obj.length > 0 and obj.is_directory:
      # Do something

如果xyz不是单个字符,则解决方案保持不变.Python中的字符串是一个字符序列,因此可以用单词序列(列表)替换'xyz'字符串.你也可以在里面放任何东西.

for obj in objects:
   if not any(w in obj.name for w in [word1, word2, word3]) and obj.length > 0 and obj.is_directory:
      # Do something

Python相关问答推荐

在Python中使用yaml渲染(多行字符串)

基于Scipy插值法的三次样条系数

polars:有效的方法来应用函数过滤列的字符串

使用Python异步地持久跟踪用户输入

如何将返回引用的函数与pybind11绑定?

Pandas在rame中在组内洗牌行,保持相对组的顺序不变,

Python协议不兼容警告

为什么我只用exec()函数运行了一次文件,而Python却运行了两次?

关于数字S种子序列内部工作原理的困惑

Django/Python-UpdateView中的Delete函数正在复制,而不是删除

如何使用Tkinter的CheckButtom隐藏或显示由滑块控制的画布线?

Python:比较日期并批量更新某些字段

第一行中的Pandas 按条件替换

如果任务100%占用CPU,为什么这个多线程代码比顺序代码快?--Python3.10

新进程不会在运行FastApi的Docker中启动

在给定一组约束的情况下使用所有唯一组合创建数据帧

如何避免在PIL中绘制文本时创建透明部分?

使用Pandas 遍历词典

如何在Python中删除对象

用于将Custom TypeAlias替换为NotRequired的典型插件