Post

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.