本期整理了几个基础python防坑小常识,希望对大家有所帮助。
执行以下代码的结果是什么:
python 代码解读复制代码>>> isinstance(type, object)
True
>>> isinstance(object, type)
True
>>> isinstance(object, object)
True
>>> isinstance(type, type)
True
在 Python 中,所有东西都是对象,因此对于对象的任何实例检查都将返回True
。
isinstance(Anything, object) --> True
Python 的 type 表示构建所有 Python 类型的元类。因此,所有类型,如 int、str、object 都是 type 类的实例,而 type 类本身也是一个对象,与 Python 中的一切一样。
type 是 Python 中唯一一个自身是自己实例的对象。
执行以下代码的结果是什么:
python 代码解读复制代码>>> all([True, True, True])
True
>>> all([True, True, False])
False
>>>
>>>
>>> all([True, True, {}])
False
>>> any([True, True, {}])
True
>>>
>>> all([])
True
>>>
>>> any([])
False
根据内置函数 any 的定义,我们知道它将:
如果 iterable 中的任何元素为 true,则返回 true。
Python 中的逻辑运算符是惰性的,算法是查找第一个 true 元素的出现情况,如果没有找到,则返回 False。由于序列为空,因此没有元素可以是 true,因此 any([]) 返回 False。
all 的例子稍微有些复杂,因为它表示真空的真实性。与链式惰性逻辑运算符类似,算法是查找第一个 false 元素,如果没有找到,则返回 True。由于在空序列中没有false 元素,因此 all([]) 返回 True。
python 代码解读复制代码>>> def my_all(iterable):
... for element in iterable:
... if not element:
... return False
... return True
...
>>> my_all([])
True
>>> my_all([True, True, {}])
False
执行以下代码的结果是什么:
ini 代码解读复制代码>>> False == (False in [False]) # 这个好理解!
False
>>> (False == False) in [False] # 这个也好理解!!
False
>>> True in [False]
False
>>> False == False in [False] # 那这个是为什么呢?
True
在python中,==
运算符和in
运算符都具有相同的优先级,并且它们都是从左到右结合的。因此False == False in [False]
实际上是(False == False) and (False in [False]
的简写形式。
加个栗子理解下:
ini 代码解读复制代码>>> '1' in '11' == True
False
>>> 4 > 3 == 3
True
执行以下代码的结果是什么:
scss 代码解读复制代码>>> x = 1, 2, 3
>>>
>>> sorted(x) == x
False
>>>
>>> sorted(x)
[1, 2, 3]
>>> x
(1, 2, 3)
>>>
>>> y = reversed(x)
>>> sorted(y) == sorted(y)
False
>>>
>>>
>>> y
<reversed object at 0x7fb3aa5370>
❝ 注意:sorted 方法返回的是一个list,reversed 方法返回的是一个iterator。 ❞
执行以下代码的结果是什么:
ini 代码解读复制代码>>> 1 == True
True
>>> False ** False == True
True
>>> 0 == False
True
❝ Python 将 False 视为 0, True 视为 1 ❞
执行以下代码的结果是什么:
scss 代码解读复制代码>>> round(1 / 2)
0
>>>
>>>
>>> round(3 / 2)
2
>>>
>>> round(5 / 2)
2
为什么 round(5 / 2) 返回 2 而不是 3?这里的问题在于 Python 的 round 方法实现了银行家舍入,其中所有半值都将四舍五入到最接近的偶数。 即:
+
css 代码解读复制代码>>> a = [1, 2, 3]
>>> b = a
>>>
>>>
>>> a = a + [4]
>>> a
[1, 2, 3, 4]
>>> b
[1, 2, 3]
+=
ini 代码解读复制代码>>> list1 = [1, 2, 3]
>>> list2 = list1
>>> list1 += list2
>>>
>>> list1
[1, 2, 3, 1, 2, 3]
>>> list2
[1, 2, 3, 1, 2, 3]
❝
+
用于连接两个列表,生成一个新的列表。+=
用于将一个列表与另一个列表相加,并将结果存储在原始列表中,修改原始列表。❞
执行以下代码的结果是什么:
ini 代码解读复制代码>>> my_list = [1, 2, 3, 4, 5]
>>> for i in range(len(my_list)):
... if my_list[i] % 2 == 0:
... del my_list[i]
...
执行结果:
sql 代码解读复制代码>>> my_list = [1, 2, 3, 4, 5]
>>> for i in range(len(my_list)):
... if my_list[i] % 2 == 0:
... del my_list[i]
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
IndexError: list index out of range
在这个示例中,我们试图删除列表中的偶数元素。然而,这个代码会导致错误,因为在删除元素后,列表的长度发生变化,但循环中的索引 i
仍然会增加,这可能会导致索引超出列表边界的错误。
为了避免这种错误,可以使用以下方法之一来移除元素:
ini 代码解读复制代码my_list = [1, 2, 3, 4, 5]
new_list = [x for x in my_list if x % 2 != 0]
ini 代码解读复制代码my_list = [1, 2, 3, 4, 5]
for i in range(len(my_list) - 1, -1, -1):
if my_list[i] % 2 == 0:
del my_list[i]
这些方法可以避免在移除元素时引发错误,并确保代码正常运行。
我们知道sum([])
的返回值为0,那有没有办法修改呢,比如返回0.0
,答案是:有的。而且就在sum函数的签名里。
sql 代码解读复制代码>>> sum("", [1])
[1]
>>> sum("", [1, 2])
[1, 2]
>>>
>>>
>>> sum([1, 2])
3
>>>
>>> sum([1, 2, 3], 1)
7
>>>
>>> sum([1, 2, 3], 9)
15
>>> sum([], {1, 2, 3})
{1, 2, 3}
>>> help(sum)
Help on built-in function sum in module builtins:
sum(iterable, /, start=0)
Return the sum of a 'start' value (default: 0) plus an iterable of numbers
When the iterable is empty, return the start value.
This function is intended specifically for use with numeric values and may
reject non-numeric types.
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。