Skip to content

Latest commit

 

History

History
199 lines (139 loc) · 3.54 KB

File metadata and controls

199 lines (139 loc) · 3.54 KB
Error in user YAML: (<unknown>): found a tab character that violate indentation while scanning a plain scalar at line 3 column 3
---
- oeasy Python 0198
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
- 本教程同步发布在: 
	- 个人网站: `https://oeasy.org` 
	- 蓝桥云课: `https://www.lanqiao.cn/courses/3584` 
	- GitHub: `https://github.com/overmind1980/oeasy-python-tutorial` 
	- Gitee: `https://gitee.com/overmind1980/oeasypython` 
---

字典推导式

回忆

  • 这次我们研究了any函数
    • 任何一次迭代出True
      • 就返回True
    • 都迭代完了 也没有返回
      • 就返回False

图片描述

  • any本质上是 一堆条件的或运算
  • 那有没有与运算 对应的函数呢?🤔

问问ai

图片描述

all

all
help(all)
  • 查看帮助手册

图片描述

  • 迭代中 得到True
    • 返回True
  • 迭代完了 没有返回
    • 返回False

all

l = [123,0.45,6j,"abc",b"\x80",[0],(0),{0,1}]
list(item for item in l)
list(bool(item) for item in l)
all(l)
  • 其中有一个False
    • 结果就是False

图片描述

  • 去掉了那个False
l = [123,0.45,6j,"abc",b"\x80",[0],{0,1},0]
all(l)
  • 结果就是True

图片描述

判断

# 判断列表中的所有元素是否都大于 0
numbers = [1, 2, 3, 4, 5]
result = all(num > 0 for num in numbers)
print(result)  # True

numbers = [1, 2, 0, 4, 5]
result = all(num > 0 for num in numbers)
print(result)  # False

  • 都大于0
    • 才True
  • all 大于0
    • 才True

图片描述

全字母

# 判断字符串中的所有字符是否都是字母
string = 'abcdef'
result = all(char.isalpha() for char in string)
print(result)  # True

string = 'abc1def'
result = all(char.isalpha() for char in string)
print(result)  # False
  • 全是字母才行

图片描述

  • 可以把all改成any吗?

all的本质

condition = all([True,True,False])
condition

condition = True and True and False
condition
  • all本质是各种条件的逻辑与

图片描述

  • 可以把all改成any吗?

修改

# all
string = 'abcdef'
result = all(char.isalpha() for char in string)
print(result)  # True

# any
string = 'abcdef'
result = not any(not char.isalpha() for char in string)
print(result)  # True
  • 效果

图片描述

  • 理论来自
    • 摩根定律

摩根定律

图片描述

  • 可以把any改成all吗?

修改

enemies = [
	{"id": 1, "hp":0},
	{"id": 2, "hp":0},
	{"id": 3, "hp":0}
]
any(enemy["hp"] > 0 for enemy in enemies)
not all(enemy["hp"] <= 0 for enemy in enemies)
  • 修改结果
    • 否定之否定
    • 不太合理

图片描述

  • 一般都是 见到 双重否定
    • 改成肯定

交给ai

图片描述

  • 双重否定
    • 改成了肯定

总结

  • 这次研究了all函数
    • 迭代对象中
      • 所有 都为True 才能得True
      • 有个False 就为False
  • 全真为真 有假为假
    • all 本质上是 一堆条件的 与运算

图片描述

  • 我们总结一下吧?!🤔
  • 下次再说 👋

  • 本文来自 oeasy Python 系统教程。
  • 想完整、扎实学 Python,
  • 搜索 oeasy 即可。