Python 逻辑或运算符行为奇怪

标签 python for-loop arraylist operators boolean

<分区>

我正在尝试使用扩展名为 '.png''.jpg''jpeg' 在一行 for 循环中。我通过使用逻辑 运算符尝试了此操作,但这只会导致一个空列表。

images = [i for i in os.listdir('.') if i[-4:] == ('.png' or '.jpg' or 'jpeg')]

如何检查 '.png''.jpg''jpeg' 是否是最后 4 个字 rune 件,同时将其全部保存在一行 for 循环中?

最佳答案

其他答案建议在此处使用 in,但您可能更喜欢的另一种方式是使用 str.endswith() 方法:

extensions = '.png', '.jpg', '.jpeg'
images = [i for i in os.listdir('.') if i.endswith(extensions)]

这样做的好处是您不必在 .jpeg 上捏造匹配项:您可以检查任何长度的扩展(甚至将列表存储在与其余代码分开的地方)如果有比其他短或长的代码,则不必担心破坏代码。

关于Python 逻辑或运算符行为奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10267841/

相关文章:

matlab - 在 MATLAB 中使用多重计算优化三个嵌套循环

java - 如何在 ArrayList 对象中存储方法或值

java - 根据照片属性按字母顺序对照片 ArrayList 进行排序

php - 如何使用blowfish进行加密在python和php之间发送加密消息?

python - 这本字典如何获取数据?

python - 当我的项目(Django)发生任何变化时如何自动运行测试?

java - 如何每 5 秒更新一次 textview 变量

java - 二维 ArrayList 初始化行

python - 随机选择 DF 的特定值

python - 基于多键或多键组合或合并字典