Python常见错误汇总

zip

>>> x = [1, 2, 3]
>>> y = ['a', 'b', 'c']
# 实现x与y的一一对应
>>> [[i, j] for i in x for j in y]
[[1, 'a'],
 [1, 'b'],
 [1, 'c'],
 [2, 'a'],
 [2, 'b'],
 [2, 'c'],
 [3, 'a'],
 [3, 'b'],
 [3, 'c']]
# 却是一种笛卡尔积的关系

想要实现一一对应还是应该用zip

>>> [[i, j] for i, j in zip(x, y)]
[[1, 'a'], [2, 'b'], [3, 'c']]

奇怪的zip

因为zip对象(python 3)不支持len操作,且zip对象is not subscriptable
所以有时我们需要对此进行强制类型转换,然而当通过list进行强转时,奇妙的事情发生了,

>>> x = zip([1, 2, 3], ['a', 'b', 'c']
>>> list(x)
[(1, 'a'), (2, 'b'), (3, 'c')]
>>> list(x)
[]          # 为空

所以,有必要的话,我们需要保存一下中间变量:

>>> x = list(x)

索引为-1表示最后一个元素,而非倒数第二个

```
>>>x=list(range(10))
>>>x[-1]
9
>>>x[:-1]
[0, 1, 2, 3, 4, 5, 6, 7, 8]         # 除去最后一位元素,因为索引区间左闭右开
```

TypeError: object() takes no parameters

错误内容为:该类型不接受任何参数,可见错误的位置为类的构造函数,也即__init__(self)

或者未显式定义构造函数,或者定义的不合适,如以下的情况下,在客户端进行调用时会发生标题中的错误内容:

class A(object):
    # 不接受任何参数
    def __init__(self):
        pass
class A(object):
    # 命名错误,不是构造函数
    def __int__(self, sizes):
        pass

你可能感兴趣的:(Python常见错误汇总)