Difference Between 'and' 'or' 'not' and '|' '&' '~'
在 Python 中,and、or、not 和 &、|、~ 都是逻辑运算符,但它们的行为有些不同。
and 和 or 是短路逻辑运算符,也就是说,如果第一个操作数已经确定了整个表达式的结果,那么就不会再计算第二个操作数。具体来说:
- 对于 and 运算符,当第一个操作数为假(False)时,整个表达式的结果就是假;否则,需要继续计算第二个操作数,返回第二个操作数的值。
- 对于 or 运算符,当第一个操作数为真(True)时,整个表达式的结果就是真;否则,继续计算第二个操作数,返回第二个操作数的值。
而 &、|、~ 则是位运算符,用于按位进行逻辑运算。这些运算符在应用于布尔类型的操作数时,会将布尔值看作 0 或 1 进行计算,因此可以用于布尔类型的数组(或 pandas 的 Series)的按位操作。具体来说:
- 对于 & 运算符,对两个操作数的每一位进行 AND 运算,返回一个新的布尔型数组,表示按位进行 AND 运算的结果。
- 对于 | 运算符,对两个操作数的每一位进行 OR 运算,返回一个新的布尔型数组,表示按位进行 OR 运算的结果。
- 对于 ~ 运算符,对操作数的每一位进行 NOT 运算,返回一个新的布尔型数组,表示按位进行 NOT 运算的结果。
- 因此,在 Python 中使用逻辑运算符或位运算符时,需要根据具体情况来选择合适的运算符。如果对布尔类型的操作数进行运算,通常可以使用逻辑运算符;如果对整数类型的操作数进行运算,则需要使用位运算符。
常用结构及其方法
- list ```python
FIFO 队列
q = [] # 新建一个空队列
inputs = [“a”, “b”, “c”, “d”] # 待被压入的数据
for i in inputs:
q.append(i) # 压入数据
while q: output = q.pop(0) # 弹出数据 print(output)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
```python
# FILO 队列
q = [] # 新建一个空队列
inputs = ["a", "b", "c", "d"] # 待被压入的数据
for i in inputs:
q.append(i) # 压入数据
while q:
output = q.pop(-1) # 弹出数据
# or default
# output = q.pop()
print(output)
- dict ```python
tinydict = {‘Name’: ‘Zara’, ‘Age’: 7, ‘Class’: ‘First’}
print (“tinydict[‘Name’]: “, tinydict[‘Name’]) print (“tinydict[‘Age’]: “, tinydict[‘Age’])
1
2
3
4
5
6
7
8
9
10
11
```python
del tinydict['Name'] # 删除键是'Name'的条目
tinydict.clear() # 清空字典所有条目 ={}
del tinydict # 删除字典
dict.values() # 以列表返回字典中的所有值
dict.items() # 以列表返回可遍历的(键, 值) 元组数组
dict.keys() # 以列表返回一个字典所有的键
dict.get(key, default=None) # 返回指定键的值,如果值不在字典中返回default值
pop(key[,default]) # 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
popitem() # 返回并删除字典中的最后一对键和值。
- 使用场景:
- 当这个键程序后面不在使用,明确删除后不会影响其它业务,可以使用pop(),但一定要给默认值,否则当key不存在的时候,程序会报错 ```python
t = {‘name’: ‘summer’, ‘age’: 23} t.pop(‘new_nmae’, ‘judy’) ‘judy’ t {‘name’: ‘summer’, ‘age’: 23}
1
2
3
4
5
6
7
8
### 如何在循环dict()中执行pop操作
* 如,想把 d = {‘a’:1, ‘b’:2, ‘c’:3} 中不满足条件的元素给删除
* method1 RuntimeError
```python
d = {'a':1, 'b':2, 'c':3}
for k, v in d.items():
if v < 2:
d.pop(k)
- method2
1 2 3 4 5
d = {'a':1, 'b':2, 'c':3} for k in list(d.keys()): v = d[k] if v < 2: d.pop(k) 或者 del d[k]
This post is licensed under CC BY 4.0 by the author.